pub struct RecoveryTimeouts {
pub jit_handoff: Elapsed,
pub startup: Elapsed,
pub idle: Elapsed,
}Expand description
How long an attempt may sit in each pre-terminal state before recovery treats it as stuck.
No document in this taskflow states these durations. 03-control-flows.md
flow 2.7 says a surplus runner “exits on its idle timeout” without giving one,
and flow 4.4 says an expired JIT configuration is discarded without saying
when it expires. RecoveryTimeouts::provisional therefore returns values
chosen here, named so that a caller cannot mistake them for a product
decision, and there is deliberately no Default impl — e1 and e3 should
have to write the numbers down.
Fields§
§jit_handoff: ElapsedHow long allocated or jit_received may last before the JIT
configuration is assumed lost.
startup: ElapsedHow long starting may last before the runner is assumed not to be
coming up.
idle: ElapsedHow long idle may last, in both directions it is read.
For an attempt whose process is already gone it separates the two readings of that exit: past this, the surplus case; before it, a crash.
For one whose process is still alive and still registered it is a
deadline rather than a reading — the point at which the agent stops the
runner itself. Nothing else does: Runner.Listener run long-polls for
an assignment indefinitely, so this value, and only this value, bounds
how long a runner that never gets a job holds its capacity slot and its
entry in the target’s runner settings.
Implementations§
Source§impl RecoveryTimeouts
impl RecoveryTimeouts
pub const fn new(jit_handoff: Elapsed, startup: Elapsed, idle: Elapsed) -> Self
Sourcepub fn provisional() -> Self
pub fn provisional() -> Self
Placeholder values, with one exception — see the type documentation.
idle is no longer a placeholder. It stopped being one when it became
the only thing that bounds a live runner: five minutes is long enough
that a runner GitHub is about to assign is not stopped out from under
the assignment, and short enough that a machine does not carry an
unusable slot, and a repository an unusable runner row, for hours. The
other two still only separate readings of an event that already
happened, and nothing here has had to decide what they should be.
Trait Implementations§
Source§impl Clone for RecoveryTimeouts
impl Clone for RecoveryTimeouts
Source§fn clone(&self) -> RecoveryTimeouts
fn clone(&self) -> RecoveryTimeouts
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more