diff --git a/packages/cli/src/events/__tests__/telemetry-event-relay.test.ts b/packages/cli/src/events/__tests__/telemetry-event-relay.test.ts index 01673cd375bb6..8f73b475ca88f 100644 --- a/packages/cli/src/events/__tests__/telemetry-event-relay.test.ts +++ b/packages/cli/src/events/__tests__/telemetry-event-relay.test.ts @@ -1155,22 +1155,6 @@ describe('TelemetryEventRelay', () => { expect(telemetry.trackWorkflowExecution).not.toHaveBeenCalled(); }); - it('should not track when execution status is "waiting"', async () => { - const event: RelayEventMap['workflow-post-execute'] = { - workflow: mockWorkflowBase, - executionId: 'execution123', - userId: 'user123', - runData: { - status: 'waiting', - data: { resultData: {} }, - } as IRun, - }; - - eventService.emit('workflow-post-execute', event); - - expect(telemetry.trackWorkflowExecution).not.toHaveBeenCalled(); - }); - it('should track successful workflow execution', async () => { const runData = mock({ finished: true, diff --git a/packages/cli/src/events/relays/telemetry.event-relay.ts b/packages/cli/src/events/relays/telemetry.event-relay.ts index e33d736c1adb4..f8102f70ae095 100644 --- a/packages/cli/src/events/relays/telemetry.event-relay.ts +++ b/packages/cli/src/events/relays/telemetry.event-relay.ts @@ -600,11 +600,6 @@ export class TelemetryEventRelay extends EventRelay { return; } - if (runData?.status === 'waiting') { - // No need to send telemetry or logs when the workflow hasn't finished yet. - return; - } - const telemetryProperties: IExecutionTrackProperties = { workflow_id: workflow.id, is_manual: false, diff --git a/packages/cli/src/execution-lifecycle/__tests__/execution-lifecycle-hooks.test.ts b/packages/cli/src/execution-lifecycle/__tests__/execution-lifecycle-hooks.test.ts index 38ea6de196ea2..4d227279627f5 100644 --- a/packages/cli/src/execution-lifecycle/__tests__/execution-lifecycle-hooks.test.ts +++ b/packages/cli/src/execution-lifecycle/__tests__/execution-lifecycle-hooks.test.ts @@ -126,6 +126,12 @@ describe('Execution Lifecycle Hooks', () => { workflow: workflowData, }); }); + + it('should not emit workflow-post-execute events for waiting executions', async () => { + await hooks.executeHookFunctions('workflowExecuteAfter', [waitingRun, {}]); + + expect(eventService.emit).not.toHaveBeenCalledWith('workflow-post-execute'); + }); }); }; diff --git a/packages/cli/src/execution-lifecycle/execution-lifecycle-hooks.ts b/packages/cli/src/execution-lifecycle/execution-lifecycle-hooks.ts index d3f23797a5caf..d355fe9db8834 100644 --- a/packages/cli/src/execution-lifecycle/execution-lifecycle-hooks.ts +++ b/packages/cli/src/execution-lifecycle/execution-lifecycle-hooks.ts @@ -68,6 +68,8 @@ function hookFunctionsWorkflowEvents(userId?: string): IWorkflowExecuteHooks { ], workflowExecuteAfter: [ async function (this: WorkflowHooks, runData: IRun): Promise { + if (runData.status === 'waiting') return; + const { executionId, workflowData: workflow } = this; eventService.emit('workflow-post-execute', { executionId, runData, workflow, userId }); }, 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 20abce70cd7bf..e0ff5cb2e2f0a 100644 --- a/packages/cli/src/executions/__tests__/execution-recovery.service.test.ts +++ b/packages/cli/src/executions/__tests__/execution-recovery.service.test.ts @@ -37,7 +37,6 @@ describe('ExecutionRecoveryService', () => { instanceSettings, push, executionRepository, - mock(), ); }); diff --git a/packages/cli/src/executions/execution-recovery.service.ts b/packages/cli/src/executions/execution-recovery.service.ts index 9ddf893a4fa3d..e6ff4ad9316ab 100644 --- a/packages/cli/src/executions/execution-recovery.service.ts +++ b/packages/cli/src/executions/execution-recovery.service.ts @@ -8,7 +8,6 @@ import { ARTIFICIAL_TASK_DATA } from '@/constants'; import { ExecutionRepository } from '@/databases/repositories/execution.repository'; import { NodeCrashedError } from '@/errors/node-crashed.error'; import { WorkflowCrashedError } from '@/errors/workflow-crashed.error'; -import { EventService } from '@/events/event.service'; import { getWorkflowHooksMain } from '@/execution-lifecycle/execution-lifecycle-hooks'; import type { IExecutionResponse } from '@/interfaces'; import { Push } from '@/push'; @@ -25,7 +24,6 @@ export class ExecutionRecoveryService { private readonly instanceSettings: InstanceSettings, private readonly push: Push, private readonly executionRepository: ExecutionRepository, - private readonly eventService: EventService, ) {} /** @@ -176,12 +174,6 @@ export class ExecutionRecoveryService { private async runHooks(execution: IExecutionResponse) { execution.data ??= { resultData: { runData: {} } }; - this.eventService.emit('workflow-post-execute', { - workflow: execution.workflowData, - executionId: execution.id, - runData: execution, - }); - const externalHooks = getWorkflowHooksMain( { userId: '',