Run vacuum on sqlite periodically

This commit is contained in:
Omar Ajoue
2020-12-31 10:42:16 +01:00
parent 638310fa94
commit d528e442ba
2 changed files with 21 additions and 0 deletions

View File

@@ -12,6 +12,7 @@ import {
ActiveWorkflowRunner, ActiveWorkflowRunner,
CredentialsOverwrites, CredentialsOverwrites,
CredentialTypes, CredentialTypes,
DatabaseType,
Db, Db,
ExternalHooks, ExternalHooks,
GenericHelpers, GenericHelpers,
@@ -156,6 +157,18 @@ export class Start extends Command {
// Wait till the database is ready // Wait till the database is ready
await startDbInitPromise; await startDbInitPromise;
const dbType = await GenericHelpers.getConfigValue('database.type') as DatabaseType;
if (dbType === 'sqlite') {
const vacuumInterval = config.get('database.sqlite.vacuumInterval') as number;
if (vacuumInterval >= 0) {
Db.collections.Execution!.query("VACUUM;");
if (vacuumInterval > 0) {
setInterval(() => Db.collections.Execution!.query("VACUUM;"), vacuumInterval * 1000);
}
}
}
if (flags.tunnel === true) { if (flags.tunnel === true) {
this.log('\nWaiting for tunnel ...'); this.log('\nWaiting for tunnel ...');

View File

@@ -124,6 +124,14 @@ const config = convict({
env: 'DB_MYSQLDB_USER', env: 'DB_MYSQLDB_USER',
}, },
}, },
sqlite: {
vacuumInterval: {
doc: 'SQLite Vacuum operation interval',
format: Number,
default: 86400, // Given in seconds; -1 disables. 0 executes only at startup.
env: 'DB_SQLITE_VACUUM_INTERVAL',
},
},
}, },
credentials: { credentials: {