diff --git a/internal-packages/run-engine/src/engine/systems/dequeueSystem.ts b/internal-packages/run-engine/src/engine/systems/dequeueSystem.ts index d02ac75f97..3f49f7d982 100644 --- a/internal-packages/run-engine/src/engine/systems/dequeueSystem.ts +++ b/internal-packages/run-engine/src/engine/systems/dequeueSystem.ts @@ -99,6 +99,20 @@ export class DequeueSystem { const snapshot = await getLatestExecutionSnapshot(prisma, runId); if (!isDequeueableExecutionStatus(snapshot.executionStatus)) { + // If it's pending executing it will be picked up by the stalled system if there's an issue + if (snapshot.executionStatus === "PENDING_EXECUTING") { + this.$.logger.error( + "RunEngine.dequeueFromMasterQueue(): Run is already PENDING_EXECUTING, removing from queue", + { + runId, + orgId, + } + ); + // remove the run from the queue + await this.$.runQueue.acknowledgeMessage(orgId, runId); + return null; + } + //create a failed snapshot await this.executionSnapshotSystem.createExecutionSnapshot(prisma, { run: {