Skip to main content

RecoveryTimeouts

Struct RecoveryTimeouts 

Source
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: Elapsed

How long allocated or jit_received may last before the JIT configuration is assumed lost.

§startup: Elapsed

How long starting may last before the runner is assumed not to be coming up.

§idle: Elapsed

How 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

Source

pub const fn new(jit_handoff: Elapsed, startup: Elapsed, idle: Elapsed) -> Self

Source

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

Source§

fn clone(&self) -> RecoveryTimeouts

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for RecoveryTimeouts

Source§

impl Debug for RecoveryTimeouts

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for RecoveryTimeouts

Source§

impl PartialEq for RecoveryTimeouts

Source§

fn eq(&self, other: &RecoveryTimeouts) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for RecoveryTimeouts

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more