diff --git a/packages/cli/src/executions/__tests__/execution-recovery.service.test.ts b/packages/cli/src/executions/__tests__/execution-recovery.service.test.ts index 0ec4d6b575..03ca6a4922 100644 --- a/packages/cli/src/executions/__tests__/execution-recovery.service.test.ts +++ b/packages/cli/src/executions/__tests__/execution-recovery.service.test.ts @@ -175,6 +175,31 @@ describe('ExecutionRecoveryService', () => { expect(amendedExecution).toBeNull(); }); + test('for canceled executions with data, should return `null`', async () => { + /** + * Arrange + */ + const workflow = await createWorkflow(); + const execution = await createExecution( + { status: 'canceled', data: stringify({ runData: {} }) }, + workflow, + ); + const messages = setupMessages(execution.id, 'Some workflow'); + + /** + * Act + */ + const amendedExecution = await executionRecoveryService.recoverFromLogs( + execution.id, + messages, + ); + + /** + * Assert + */ + expect(amendedExecution).toBeNull(); + }); + test('should return `null` if no execution found', async () => { /** * Arrange diff --git a/packages/cli/src/executions/execution-recovery.service.ts b/packages/cli/src/executions/execution-recovery.service.ts index 428dac46f5..92286f11af 100644 --- a/packages/cli/src/executions/execution-recovery.service.ts +++ b/packages/cli/src/executions/execution-recovery.service.ts @@ -77,7 +77,10 @@ export class ExecutionRecoveryService { * because execution lifecycle hooks cause worker event logs to be partitioned. * Hence we need to filter out finished executions here. * */ - if (!execution || (['success', 'error'].includes(execution.status) && execution.data)) { + if ( + !execution || + (['success', 'error', 'canceled'].includes(execution.status) && execution.data) + ) { return null; }