You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- executor: stop treating a missing job row as a cancellation in the watcher.
Jobs are not deleted in normal operation; the integration test's mid-run
truncate is handled by the resilient terminal transition instead. The test's
long job is shortened so it cannot outlive teardown.
- executor: on a hard-kill, default to a retry and only map to canceled when the
abort reason is clearly a JobCanceled (failsafe for unknown abort reasons).
- runner-pool: if the signal is already aborted on entry, reject without
submitting the job to the pool instead of running it anyway.
- docs: remove the duplicated crash-isolation and inline-abort danger callouts
from the execution-modes page (the tables already convey them).
Copy file name to clipboardExpand all lines: packages/docs/production/execution-modes.md
+1-7Lines changed: 1 addition & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -36,10 +36,6 @@ Use `fork: false` when:
36
36
- You're running an **integration test** and want to avoid IPC and process teardown flakiness.
37
37
- Your jobs need access to **live, in-process state** that can't cross a process boundary, for example a dependency-injection container.
38
38
39
-
::: danger No crash isolation with `fork: false`
40
-
With the default `fork: true`, a job that throws an unhandled exception or calls `process.exit()` only takes down the engine fork, and Sidequest restarts it. With `fork: false`, the engine shares your application's process: **a misbehaving job can crash your whole app.** Only use it when you understand and accept that.
|`runner: "thread"`, `abortGracePeriodMs: 0` (default) | No (worker is killed immediately) | Killed right away. |
160
156
|`runner: "thread"`, `abortGracePeriodMs > 0`| Yes, for the grace window | Killed after the grace period. |
161
157
162
-
::: danger Inline timeout/cancel only work if your job honors the signal
163
-
In `runner: "inline"` there is no way to forcibly stop a job. If your job does not pass `this.abortSignal` to its async work or check `this.abortSignal.aborted` / `throwIfAborted()`, then **timeouts and cancellation have no effect**: the job keeps running until it returns on its own. Treat `this.abortSignal` as mandatory for any long-running inline job.
164
-
:::
158
+
So in inline mode `this.abortSignal` is effectively mandatory for any long-running job: a job that does not honor it keeps running until it returns on its own (timeouts and cancellation cannot stop it).
165
159
166
160
### `abortGracePeriodMs`: graceful kill for thread jobs
0 commit comments