Skip to content

Timings and defaults

Name Value What it is
dispatch.UnresolvedMinAge 10 minutes the default for how long an attempt's outcome stays unknown before it escalates; dispatch.WithUnresolvedAge
dispatch.CleanupDeadline 30 minutes the default for how long after a cancel the record may stay unsettled before it escalates, once; dispatch.WithCleanupDeadline
dispatch.CallDeadline 30 seconds how far ahead of now a hold, release or requeue call's deadline is set
dispatch.SharedHoldFor 24 hours the deadline of the hold a recovery rule becomes under a shared checkpoint
dispatch.CessationInterval 1 minute how often the adapter's cessation signal is asked again while that hold stands
records.DefaultSubmitRetries 2 the default for how many times Start is retried for one submission after an unknown outcome; dispatch.WithSubmitRetries
supervise.DefaultDrain 30 seconds how long a stopping supervisor may spend finishing the step in flight; supervise.WithDrain
supervise.DefaultPoll 30 seconds the longest a supervisor sleeps without looking at the backend; supervise.WithPoll
dispatch.HoldBase 315,576,000 seconds (ten Julian years) the offset of a Slurm hold's far-future start time from the job's submit time; see holds as a far-future start time

The retry bound, the clean-up deadline and the escalation age are a job's own: set at submit, recorded in the record's header, and read from there by every actor. The call deadline, the shared-checkpoint hold and the cessation interval are constants. A call counts as expired at its deadline plus the adapter's declared CallBound, as recorded in the job's header.

Each adapter works out its own CallBound: the Slurm adapter from its preflight's measurements (how the call bound is made), and the Kubeflow adapter from its timeouts.apiserverRequest setting (declarations).

supervise.New refuses a poll interval longer than any PolledLoss window the adapter declares, unless the adapter implements Watcher. A window of dispatch.Unbounded never refuses one.

supervise.Healthy(loopAt, poll, now) calls a supervisor healthy while its last completed loop is no older than three poll intervals. Where the store implements the optional records.Health, the supervisor records that time after every pass that completes, and records.Health.Loop reads it back. It is display-only: it is not a commit, never moves the revision, and a failure to record it changes nothing the supervisor does.

Supervisor options

Option Default Sets
supervise.WithDrain(d) 30 seconds the drain bound; must be positive
supervise.WithPoll(d) 30 seconds the poll interval; must be positive
supervise.WithIdentity(id) supervisor the supervisor's id in the record and in the ownership lease
supervise.WithDeliver(f) none how escalations reach a person

Submit options

Option Default Sets
dispatch.WithSupervisor() off the host will supervise the job, so the supervisor may enforce its rules
dispatch.WithIdempotencyKey(k) none a repeated Submit with k returns the existing job's plan
dispatch.WithUnmatched(p) UnmatchedResidual how an attempt with an unknown outcome affects settlement
dispatch.AcceptUnverified(rule, e) none accept a rule whose Perform is unknown, naming its enforcer
dispatch.AcceptUnenforced(rule) none accept that nobody enforces a rule
dispatch.WithSubmitRetries(n) 2 how often an ambiguous submit is retried; 0 disables retries
dispatch.WithCleanupDeadline(d) 30 minutes how long clean-up may stay pending before it escalates
dispatch.WithUnresolvedAge(d) 10 minutes how long attempts may stay unknown before they escalate

Supersede takes the same options.