jobs
Persistence and operator tooling for background jobs registered via r.job(...). Every job execution writes directly into store_job_runs (current status + duration) and store_job_run_logs (per-line log rows) from the BullMQ callbacks — no event stream in between (#2243). A daily retention-cleanup job deletes runs (and their logs) older than retentionDays; an hourly stale-run-sweep job marks runs stuck at status running past staleRunTimeoutHours as failed (#2246 — a crashed worker never fires the completion callback, so nothing else ever revisits the row). Exposes jobs:write:trigger (manual run) and jobs:write:retry (operator retry of a failed run), plus jobs:query:list, jobs:query:details, and jobs:query:catalog (manual jobs) for the operator UI.
How it fits
Section titled “How it fits”The write commands this feature provides (Provides).
flowchart TB
n_jobs["jobs"]
subgraph how_provides["Provides"]
n_cmd_jobs_write_retry(["retry"])
n_cmd_jobs_write_trigger(["trigger"])
end
n_jobs --> n_cmd_jobs_write_retry
n_jobs --> n_cmd_jobs_write_trigger
Provides — write commands this feature registers (dispatch them through the command bus):
Dependencies
Section titled “Dependencies”- Requires: none
- Activation: always on (not toggleable)