mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-20 11:22:15 +00:00
feat(core): Add support for SQLite connection pooling (#8722)
This commit is contained in:
committed by
GitHub
parent
d85d0ecf45
commit
c4c319d7cf
@@ -171,11 +171,17 @@ export const schema = {
|
||||
env: 'DB_SQLITE_DATABASE',
|
||||
},
|
||||
enableWAL: {
|
||||
doc: 'Enable SQLite WAL mode',
|
||||
doc: 'Enable SQLite WAL mode (Always enabled for pool-size > 1)',
|
||||
format: Boolean,
|
||||
default: false,
|
||||
env: 'DB_SQLITE_ENABLE_WAL',
|
||||
},
|
||||
poolSize: {
|
||||
doc: 'SQLite Pool Size (Setting this to 0 disables pooling)',
|
||||
format: Number,
|
||||
default: 0,
|
||||
env: 'DB_SQLITE_POOL_SIZE',
|
||||
},
|
||||
executeVacuumOnStartup: {
|
||||
doc: 'Runs VACUUM operation on startup to rebuild the database. Reduces filesize and optimizes indexes. WARNING: This is a long running blocking operation. Will increase start-up time.',
|
||||
format: Boolean,
|
||||
|
||||
@@ -3,6 +3,7 @@ import { Container } from 'typedi';
|
||||
import type { TlsOptions } from 'tls';
|
||||
import type { DataSourceOptions, LoggerOptions } from '@n8n/typeorm';
|
||||
import type { SqliteConnectionOptions } from '@n8n/typeorm/driver/sqlite/SqliteConnectionOptions';
|
||||
import type { SqlitePooledConnectionOptions } from '@n8n/typeorm/driver/sqlite-pooled/SqlitePooledConnectionOptions';
|
||||
import type { PostgresConnectionOptions } from '@n8n/typeorm/driver/postgres/PostgresConnectionOptions';
|
||||
import type { MysqlConnectionOptions } from '@n8n/typeorm/driver/mysql/MysqlConnectionOptions';
|
||||
import { InstanceSettings } from 'n8n-core';
|
||||
@@ -47,16 +48,26 @@ export const getOptionOverrides = (dbType: 'postgresdb' | 'mysqldb') => ({
|
||||
password: config.getEnv(`database.${dbType}.password`),
|
||||
});
|
||||
|
||||
const getSqliteConnectionOptions = (): SqliteConnectionOptions => ({
|
||||
type: 'sqlite',
|
||||
...getCommonOptions(),
|
||||
database: path.resolve(
|
||||
Container.get(InstanceSettings).n8nFolder,
|
||||
config.getEnv('database.sqlite.database'),
|
||||
),
|
||||
enableWAL: config.getEnv('database.sqlite.enableWAL'),
|
||||
migrations: sqliteMigrations,
|
||||
});
|
||||
const getSqliteConnectionOptions = (): SqliteConnectionOptions | SqlitePooledConnectionOptions => {
|
||||
const poolSize = config.getEnv('database.sqlite.poolSize');
|
||||
const commonOptions = {
|
||||
...getCommonOptions(),
|
||||
database: path.resolve(
|
||||
Container.get(InstanceSettings).n8nFolder,
|
||||
config.getEnv('database.sqlite.database'),
|
||||
),
|
||||
migrations: sqliteMigrations,
|
||||
};
|
||||
if (poolSize > 0) {
|
||||
return { type: 'sqlite-pooled', poolSize, enableWAL: true, ...commonOptions };
|
||||
} else {
|
||||
return {
|
||||
type: 'sqlite',
|
||||
enableWAL: config.getEnv('database.sqlite.enableWAL'),
|
||||
...commonOptions,
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
const getPostgresConnectionOptions = (): PostgresConnectionOptions => {
|
||||
const sslCa = config.getEnv('database.postgresdb.ssl.ca');
|
||||
|
||||
Reference in New Issue
Block a user