From 0605a5ac11191a1c68ae6398f106195f5024a262 Mon Sep 17 00:00:00 2001 From: Eric Allam Date: Fri, 23 May 2025 16:16:36 +0100 Subject: [PATCH 1/2] v4: batches can only complete when all their runs have been created --- .../app/runEngine/services/batchTrigger.server.ts | 7 +++++++ .../run-engine/src/engine/systems/batchSystem.ts | 11 +++++++++++ 2 files changed, 18 insertions(+) diff --git a/apps/webapp/app/runEngine/services/batchTrigger.server.ts b/apps/webapp/app/runEngine/services/batchTrigger.server.ts index b2feca078f7..d5984f06710 100644 --- a/apps/webapp/app/runEngine/services/batchTrigger.server.ts +++ b/apps/webapp/app/runEngine/services/batchTrigger.server.ts @@ -576,6 +576,13 @@ export class RunEngineBatchTriggerService extends WithRunEngine { //triggered all the runs if (updatedBatch.processingJobsCount >= updatedBatch.runCount) { + logger.debug("[RunEngineBatchTrigger][processBatchTaskRun] All runs created", { + batchId: batch.friendlyId, + processingJobsCount: updatedBatch.processingJobsCount, + runCount: updatedBatch.runCount, + workingIndex, + }); + //if all the runs were idempotent, it's possible the batch is already completed await this._engine.tryCompleteBatch({ batchId: batch.id }); } diff --git a/internal-packages/run-engine/src/engine/systems/batchSystem.ts b/internal-packages/run-engine/src/engine/systems/batchSystem.ts index 0a17d1dc596..439c1acb865 100644 --- a/internal-packages/run-engine/src/engine/systems/batchSystem.ts +++ b/internal-packages/run-engine/src/engine/systems/batchSystem.ts @@ -42,6 +42,8 @@ export class BatchSystem { select: { status: true, runtimeEnvironmentId: true, + processingJobsCount: true, + runCount: true, }, where: { id: batchId, @@ -58,6 +60,15 @@ export class BatchSystem { return; } + if (batch.processingJobsCount < batch.runCount) { + this.$.logger.debug("#tryCompleteBatch: Not all runs are created yet", { + batchId, + processingJobsCount: batch.processingJobsCount, + runCount: batch.runCount, + }); + return; + } + const runs = await this.$.prisma.taskRun.findMany({ select: { id: true, From a20653f41cd1cc38ca4ce54a70d4a744d0c6619c Mon Sep 17 00:00:00 2001 From: Eric Allam Date: Fri, 23 May 2025 16:24:17 +0100 Subject: [PATCH 2/2] Fix flaky runs replication test --- apps/webapp/test/runsReplicationService.part1.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/webapp/test/runsReplicationService.part1.test.ts b/apps/webapp/test/runsReplicationService.part1.test.ts index 72b2bf14408..aaaa9dd1b8f 100644 --- a/apps/webapp/test/runsReplicationService.part1.test.ts +++ b/apps/webapp/test/runsReplicationService.part1.test.ts @@ -128,7 +128,7 @@ describe("RunsReplicationService (part 1/2)", () => { expect(transactionSpan).not.toBeNull(); expect(transactionSpan?.attributes["transaction.parse_duration_ms"]).toBeGreaterThan(0); - expect(transactionSpan?.attributes["transaction.parse_duration_ms"]).toBeLessThan(1); + expect(transactionSpan?.attributes["transaction.parse_duration_ms"]).toBeLessThan(5); await runsReplicationService.stop(); }