Skip to main content

Execution Lifecycle

State Transitions

QUEUED ──> ASSIGNED ──> RUNNING ──> COMPLETED
  |            |            |
  v            v            v
FAILED      FAILED       FAILED
                            |
                            v
                         STOPPED

Stale Execution Handling

A background job runs periodically to detect stale executions:

ConditionAction
QUEUED, no runner available within the configured windowMark FAILED
ASSIGNED, runner OFFLINE past the grace windowRe-queue once, then FAILED
RUNNING, runner OFFLINE past the grace windowMark FAILED

Retry model

Retries are applied at two distinct layers. Neither retries failed workflow logic; both protect the execution against infrastructure-level disruption.

LayerBehavior
Queue levelBounded retries with exponential backoff if the queue worker fails to assign the execution (for example, no Runner available, transient Redis error).
Execution levelOne automatic re-queue if the assigned Runner goes OFFLINE while the execution is still in the ASSIGNED state. After re-queue, normal assignment rules apply.
Trigger levelNo automatic retry. A failed execution is not retried from its trigger. To re-run, fire the trigger again or run the workflow manually from the Hub.

Performance metrics

Each execution records CPU average / peak and memory average / peak, sampled on the Runner and included in the final status report.

Was this page helpful?

A quick signal helps us prioritise improvements.