Skip to main content

Interruption

Enum Interruption 

Source
pub enum Interruption {
    TowerRestart,
    LostContact,
    Timeout,
    Crashed {
        exit_code: Option<i32>,
    },
    GroundStop,
}
Expand description

Why a run stopped without finishing.

Variants§

§

TowerRestart

The Tower went away — a restart, a crash, a reboot — while the run was live.

§

LostContact

The Tower stayed up but lost contact with the child: its pipes closed unexpectedly, or a suspend and resume left the handle unusable.

Deliberately distinct from Interruption::Crashed, which is what the Tower reports when it watched the process exit. Here it did not, and the difference is the whole question: losing sight of a process is not the same as the process ending.

§

Timeout

The run exceeded timeout_sec.

§

Crashed

The process exited non-zero.

Fields

§exit_code: Option<i32>

Exit code, when the operating system reported one.

§

GroundStop

A Ground Stop halted it.

Implementations§

Source§

impl Interruption

Source

pub fn is_retryable(&self) -> bool

Returns true when restarting the work could plausibly succeed.

A Ground Stop is excluded deliberately: somebody pulled the handle, and a factory that restarts through its own kill switch is not one anybody can stop.

Source

pub fn child_may_still_be_running(&self) -> bool

Returns true when the child process might still be running.

This is the difference between an interruption the Tower observed and one it merely inferred. A timeout or a non-zero exit means the Tower watched the process end. A Tower restart or a lost pipe means only that the Tower stopped being able to see it — and on Windows in particular a child routinely outlives the parent that spawned it.

Recovering in that state is how one interrupted publisher becomes two open pull requests. So these interruptions require the child to be confirmed gone before a new run is started; see authorize_recovery.

Trait Implementations§

Source§

impl Clone for Interruption

Source§

fn clone(&self) -> Self

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 Debug for Interruption

Source§

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

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

impl<'de> Deserialize<'de> for Interruption

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for Interruption

Source§

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

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

impl Eq for Interruption

Source§

impl PartialEq for Interruption

Source§

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

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

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

Inequality operator !=. Read more
Source§

impl Serialize for Interruption

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for Interruption

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V