Skip to content

Commit cedd932

Browse files
authored
Fix queued snapshot status handler (#1963)
* handle queued status change gracefully * add resource monitor to references * add resource monitor example * improve runtime manager debug logs * fix resource monitor example * add changeset
1 parent e379fc1 commit cedd932

File tree

5 files changed

+543
-10
lines changed

5 files changed

+543
-10
lines changed

.changeset/wet-deers-think.md

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"trigger.dev": patch
3+
"@trigger.dev/core": patch
4+
---
5+
6+
Fix QUEUED status snapshot handler

packages/cli-v3/src/entryPoints/managed/execution.ts

+8-2
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,13 @@ export class RunExecution {
269269
this.abortExecution();
270270
return;
271271
}
272+
case "QUEUED": {
273+
this.sendDebugLog("Run was re-queued", snapshotMetadata);
274+
275+
// Pretend we've just suspended the run. This will kill the process without failing the run.
276+
await this.taskRunProcess?.suspend();
277+
return;
278+
}
272279
case "FINISHED": {
273280
this.sendDebugLog("Run is finished", snapshotMetadata);
274281

@@ -402,8 +409,7 @@ export class RunExecution {
402409

403410
return;
404411
}
405-
case "RUN_CREATED":
406-
case "QUEUED": {
412+
case "RUN_CREATED": {
407413
this.sendDebugLog("Invalid status change", snapshotMetadata);
408414

409415
this.abortExecution();

packages/core/src/v3/runtime/managedRuntimeManager.ts

+13-8
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,10 @@ export class ManagedRuntimeManager implements RuntimeManager {
2727
private ipc: ExecutorToWorkerProcessConnection,
2828
private showLogs: boolean
2929
) {
30-
setTimeout(() => {
31-
this.log("Runtime status", {
32-
resolversbyWaitId: this.resolversByWaitId.keys(),
33-
resolversByWaitpoint: this.resolversByWaitpoint.keys(),
34-
});
35-
}, 1000);
30+
// Log out the runtime status on a long interval to help debug stuck executions
31+
setInterval(() => {
32+
this.log("[DEBUG] ManagedRuntimeManager status", this.status);
33+
}, 300_000);
3634
}
3735

3836
disable(): void {
@@ -178,14 +176,14 @@ export class ManagedRuntimeManager implements RuntimeManager {
178176
}
179177

180178
if (!waitId) {
181-
this.log("No waitId found for waitpoint", waitpoint);
179+
this.log("No waitId found for waitpoint", { ...this.status, ...waitpoint });
182180
return;
183181
}
184182

185183
const resolve = this.resolversByWaitId.get(waitId);
186184

187185
if (!resolve) {
188-
this.log("No resolver found for waitId", waitId);
186+
this.log("No resolver found for waitId", { ...this.status, waitId });
189187
return;
190188
}
191189

@@ -227,4 +225,11 @@ export class ManagedRuntimeManager implements RuntimeManager {
227225
if (!this.showLogs) return;
228226
console.log(`[${new Date().toISOString()}] ${message}`, args);
229227
}
228+
229+
private get status() {
230+
return {
231+
resolversbyWaitId: Array.from(this.resolversByWaitId.keys()),
232+
resolversByWaitpoint: Array.from(this.resolversByWaitpoint.keys()),
233+
};
234+
}
230235
}

0 commit comments

Comments
 (0)