From 0f7dc0f655725c3846270f01584a3348bbb7889f Mon Sep 17 00:00:00 2001 From: nicktrn <55853254+nicktrn@users.noreply.github.com> Date: Sun, 3 Nov 2024 13:36:38 +0000 Subject: [PATCH 1/2] ignore duplicate dependency resume messages --- .../src/entryPoints/deploy-run-controller.ts | 46 ++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/packages/cli-v3/src/entryPoints/deploy-run-controller.ts b/packages/cli-v3/src/entryPoints/deploy-run-controller.ts index 6d449a8b69..0492c5dc22 100644 --- a/packages/cli-v3/src/entryPoints/deploy-run-controller.ts +++ b/packages/cli-v3/src/entryPoints/deploy-run-controller.ts @@ -585,7 +585,15 @@ class ProdWorker { reconnectionDelayMax: 3000, }, handlers: { - RESUME_AFTER_DEPENDENCY: async ({ completions }) => { + RESUME_AFTER_DEPENDENCY: async ({ attemptId, completions }) => { + logger.log("Handling RESUME_AFTER_DEPENDENCY", { + attemptId, + completions: completions.map((c) => ({ + id: c.id, + ok: c.ok, + })), + }); + if (!this.paused) { logger.error("Failed to resume after dependency: Worker not paused"); return; @@ -616,12 +624,48 @@ class ProdWorker { return; } + const firstCompletion = completions[0]; + if (!firstCompletion) { + logger.error("Failed to resume after dependency: No first completion", { + completions, + waitForTaskReplay: this.waitForTaskReplay, + nextResumeAfter: this.nextResumeAfter, + }); + return; + } + switch (this.nextResumeAfter) { case "WAIT_FOR_TASK": { + if (this.waitForTaskReplay) { + if (this.waitForTaskReplay.message.friendlyId !== firstCompletion.id) { + logger.error("Failed to resume after dependency: Task friendlyId mismatch", { + completions, + waitForTaskReplay: this.waitForTaskReplay, + }); + return; + } + } else { + // Only log here so we don't break any existing behavior + logger.debug("No waitForTaskReplay", { completions }); + } + this.waitForTaskReplay = undefined; break; } case "WAIT_FOR_BATCH": { + if (this.waitForBatchReplay) { + if (!this.waitForBatchReplay.message.runFriendlyIds.includes(firstCompletion.id)) { + logger.error("Failed to resume after dependency: Batch friendlyId mismatch", { + completions, + waitForBatchReplay: this.waitForBatchReplay, + }); + return; + } + } else { + // Only log here so we don't break any existing behavior + logger.debug("No waitForBatchReplay", { completions }); + } + this.waitForBatchReplay = undefined; break; } From 57ef6b60d2a407c495191d622e39442e81bc27a4 Mon Sep 17 00:00:00 2001 From: nicktrn <55853254+nicktrn@users.noreply.github.com> Date: Sun, 3 Nov 2024 13:39:34 +0000 Subject: [PATCH 2/2] add changeset --- .changeset/lovely-swans-pump.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/lovely-swans-pump.md diff --git a/.changeset/lovely-swans-pump.md b/.changeset/lovely-swans-pump.md new file mode 100644 index 0000000000..c76a3dcbbd --- /dev/null +++ b/.changeset/lovely-swans-pump.md @@ -0,0 +1,5 @@ +--- +"trigger.dev": patch +--- + +Ignore duplicate dependency resume messages in deployed tasks