From 09e99ac98d64322d8e09e9f6bbdce452288ca7ff Mon Sep 17 00:00:00 2001 From: Tom Moor Date: Wed, 27 May 2026 22:37:54 -0400 Subject: [PATCH] fix: Graceful exit when import is canceled beneath import task (#12497) --- server/queues/tasks/APIImportTask.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/server/queues/tasks/APIImportTask.ts b/server/queues/tasks/APIImportTask.ts index 5572bee3e3..5740912abb 100644 --- a/server/queues/tasks/APIImportTask.ts +++ b/server/queues/tasks/APIImportTask.ts @@ -53,7 +53,6 @@ export default abstract class APIImportTask< */ public async perform({ importTaskId }: Props) { let importTask = await ImportTask.findByPk>(importTaskId, { - rejectOnEmpty: true, include: [ { model: Import, @@ -63,6 +62,12 @@ export default abstract class APIImportTask< ], }); + // The import_task row may have been deleted (e.g. its Import was removed) + // between the job being enqueued and the worker picking it up. Nothing to do. + if (!importTask) { + return; + } + // Don't process any further when the associated import is canceled by the user. if (importTask.import.state === ImportState.Canceled) { importTask.state = ImportTaskState.Canceled; @@ -107,7 +112,6 @@ export default abstract class APIImportTask< const importTask = await ImportTask.findByPk>( importTaskId, { - rejectOnEmpty: true, include: [ { model: Import, @@ -120,6 +124,10 @@ export default abstract class APIImportTask< } ); + if (!importTask) { + return; + } + importTask.state = ImportTaskState.Errored; await importTask.save({ transaction });