From b69c41bfaf9f46555f6f0e350c6e692be96be6ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Thu, 16 Feb 2023 14:57:19 +0100 Subject: [PATCH] fixup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .../tasks/PluginTaskSchedulerJanitor.test.ts | 22 +++++++++++-------- .../src/tasks/PluginTaskSchedulerJanitor.ts | 10 +++++---- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/packages/backend-tasks/src/tasks/PluginTaskSchedulerJanitor.test.ts b/packages/backend-tasks/src/tasks/PluginTaskSchedulerJanitor.test.ts index f981bf59fe..5b5d592b7b 100644 --- a/packages/backend-tasks/src/tasks/PluginTaskSchedulerJanitor.test.ts +++ b/packages/backend-tasks/src/tasks/PluginTaskSchedulerJanitor.test.ts @@ -37,17 +37,22 @@ const getTask = async (knex: Knex): Promise => { describe('PluginTaskSchedulerJanitor', () => { const logger = getVoidLogger(); const databases = TestDatabases.create({ - ids: ['MYSQL_8', 'POSTGRES_13', 'POSTGRES_9', 'SQLITE_3'], + ids: [ + /* 'MYSQL_8' not supported yet */ + 'POSTGRES_13', + 'POSTGRES_9', + 'SQLITE_3', + ], }); - jest.setTimeout(300_000); + jest.setTimeout(60_000); beforeEach(() => { jest.resetAllMocks(); }); it.each(databases.eachSupportedId())( - 'Should update date if current_run_expires_at expires , %p', + 'Should update date if current_run_expires_at expires, %p', async databaseId => { const knex = await databases.init(databaseId); await migrateBackendTasks(knex); @@ -66,19 +71,16 @@ describe('PluginTaskSchedulerJanitor', () => { }); const worker = new PluginTaskSchedulerJanitor({ + waitBetweenRuns: Duration.fromObject({ milliseconds: 20 }), knex, - waitBetweenRuns: Duration.fromObject({ minutes: 1 }), logger, }); const abortController = new AbortController(); - - await worker.start(abortController.signal); - - const row1 = await getTask(knex); + worker.start(abortController.signal); await waitForExpect(async () => { - expect(row1).toEqual( + await expect(getTask(knex)).resolves.toEqual( expect.objectContaining({ id: 'task1', current_run_ticket: null, @@ -87,6 +89,8 @@ describe('PluginTaskSchedulerJanitor', () => { }), ); }); + + abortController.abort(); }, ); }); diff --git a/packages/backend-tasks/src/tasks/PluginTaskSchedulerJanitor.ts b/packages/backend-tasks/src/tasks/PluginTaskSchedulerJanitor.ts index 0d8ea79d13..f69b7d9b88 100644 --- a/packages/backend-tasks/src/tasks/PluginTaskSchedulerJanitor.ts +++ b/packages/backend-tasks/src/tasks/PluginTaskSchedulerJanitor.ts @@ -53,16 +53,18 @@ export class PluginTaskSchedulerJanitor { private async runOnce() { const dbNull = this.knex.raw('null'); - let tasks: Array<{ id: string }>; const configClient = this.knex.client.config.client; + let tasks: Array<{ id: string }>; if (configClient.includes('sqlite3') || configClient.includes('mysql')) { - const now = await this.knex.select(this.knex.fn.now()); tasks = await this.knex(DB_TASKS_TABLE) .select('id') - .where('current_run_expires_at', '<', now); + .where('current_run_expires_at', '<', this.knex.fn.now()); await this.knex(DB_TASKS_TABLE) - .where('current_run_expires_at', '<', now) + .whereIn( + 'id', + tasks.map(t => t.id), + ) .update({ current_run_ticket: dbNull, current_run_started_at: dbNull,