fix: Graceful exit when import is canceled beneath import task (#12497)

This commit is contained in:
Tom Moor
2026-05-27 22:37:54 -04:00
committed by GitHub
parent c158697c91
commit 09e99ac98d
+10 -2
View File
@@ -53,7 +53,6 @@ export default abstract class APIImportTask<
*/
public async perform({ importTaskId }: Props) {
let importTask = await ImportTask.findByPk<ImportTask<T>>(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<ImportTask<T>>(
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 });