Skip to content

Run states

Seven states from pending to skipped, which four are terminal, what orphaned means against skipped, and the three triggers.

A run is one execution of one job on one agent. A job on three agents makes three runs at every tick, and each of them goes through the states below on its own account.

pendingleasedrunningsuccessfailedskippedorphanedan agent took itthe process is runningexited 0exited non-zero, or killednobody came for itthe agent stopped reportingterminal state
A run's path. The four states to the right and below are terminal; a run goes nowhere from them.

Seven states

Every state has its own icon and label in the application; the labels are quoted as the application shows them on hover.

pending

Waiting for an agent. A cron tick (or Run now) created the run and it is waiting for an agent to take it on its next ask for work. With an agent that is online this is a fraction of a second. The wait is bounded: a minute, or longer for a job with catch-up switched on — in detail under missed runs.

leased

Claimed by an agent. The agent has taken the run and has not yet confirmed that the process is running. Usually milliseconds; in lists it is shown the same as running, because the difference is diagnostic rather than something a reader should have to decode.

running

Running. The process on the host is running and the agent is sending output as it goes. With no time limit — Runjet does not stop a run, it only writes after a while.

success

Succeeded. The command exited with status 0. Terminal.

failed

Failed. The command exited non-zero, or did not end on its own: it was killed as the agent shut down (killed by agent shutdown), it was missing the value of a secret, or the agent could not start the process at all. The run carries the exit status, where there is one, and a sentence saying why. Terminal.

orphaned

Agent stopped reporting — outcome unknown. The agent took or started the run and then fell silent: it lost its connection, its machine, or its power. Runjet does not know how the run went — the process may well have finished — and so it does not say "failed" but "unknown". A sweep closes it once the lease the agent holds with its regular heartbeat expires. Terminal; an agent that comes back reports nothing further about it.

skipped

Skipped — no agent was available. The run waited as pending and nobody came for it within the deadline: the agent was offline, disabled or saturated. The command never ran — that is the difference from orphaned, where it ran and how it ended is unknown. Terminal.

The four terminal ones

success, failed, orphaned and skipped. The other three are transitional and a run in them holds its job's slot on that agent: until a run on an agent ends, the next tick will not start the same job there. A terminal run releases the slot and changes no further; what Runjet remembers about it and for how long is in output and retention.

Three triggers

Beside its state, every run carries what started it, with an icon of its own:

IconTriggerLabel in the application
clockscheduledTriggered by schedule — a cron tick
pointermanualTriggered manually — running by hand
historycatchupCaught up after downtime — a caught-up occurrence

The trigger decides more than the icon: a manual run does not count as the last automatic one when catching up looks for where to start.