Skip to content

Escalations

Id Committed when Committed with
foreign:<object id> Find shows an object with the job's name whose submission and attempt can't be read, and it hasn't been disposed of nothing else; it blocks settlement until a person abandons it
admin-held:<object id> Find shows a gated object held by someone other than dispatch: on Slurm a JobHeldAdmin hold, on Kubeflow another entry left in the admission-gated-by annotation nothing else; the object is never opened
all-unknown:<N> every attempt of open submission N is unresolved, none was refused, no retries are left (or the job is cancelled or finished), and the last attempt is at least the job's unresolved age old nothing else; it blocks N+1 and settlement
unmatched:<N>/<a> under the manual unmatched policy, attempt a of submission N has been unresolved for at least the job's unresolved age nothing else; it blocks settlement
refused:<N> the scheduler refused every attempt of submission N the outcome failed, cause launch-failed with the scheduler's words
failed:<cause kind> an execution ended with a cause no rule recovers: no rule covers it, its rule is escalate or enforced by nobody, its budget is spent, or the supervisor can't carry out its action the outcome failed, with that cause
overdue:<hold instance> the hold in force is past its deadline nothing else; the hold stays
cleanup-deadline a terminal job's record is still unsettled more than the job's clean-up deadline after the cancel, or after the outcome when there was no cancel nothing else; the detail names the objects still alive
give-up a person called GiveUp committed by Fold from the control intent, with the outcome failed

<object id> is the scheduler's id from the object's ref: a Slurm job id, or namespace/name on Kubernetes. <cause kind> is a cause name such as node-lost.

The unresolved age and the clean-up deadline are the job's own: 10 and 30 minutes, unless dispatch.WithUnresolvedAge and dispatch.WithCleanupDeadline set them at submit. They are recorded in the header, so every supervisor uses the same ones.

Each id is committed at most once per job, and Job.Escalated(id) reports whether it has been. The supervisor commits all of them but give-up, which GiveUp brings with it. The Detail says, in words, what happened.

An escalation is delivered by the supervisor's Deliver function, if one is set (supervise.WithDeliver), and marked delivered in the record when that returns nil. Until then Escalation.Delivered is zero.

Receive and answer escalations says what to do about each.