SagaOutcome

Enum SagaOutcome 

Source
pub enum SagaOutcome {
    Completed,
    Failed {
        reason: String,
    },
    FailedCompensation {
        reason: String,
    },
}
Expand description

Outcome of a launcher saga, written by terminate_saga.

PR LSD-1 declares all variants up-front so the LSD-2 coordinator wiring + LSD-3 recovery walker can land without further enum edits. dead_code is suppressed at the enum level because every variant is wired in a follow-up PR — opt-in suppression at the type avoids per-variant #[allow] clutter.

Mirrors srv’s SagaOutcome shape but adds FailedCompensation (LSD spec §3.5 — recovery-walker terminal state) and removes Compensated (no auto-compensation in launcher sagas yet).

PR LSD-2 calls terminate_saga(.., Completed) from apply_action when a saga returns SagaAction::Done, and Failed when a saga returns SagaAction::Failed or is evicted by the same-kind concurrent gate. PR LSD-3 calls mark_failed_compensation directly from the recovery walker; that path uses the dedicated helper below rather than terminate_saga(FailedCompensation { .. }) because recovery wants to be idempotent across repeated crash-restart cycles (the row may already be in failed_compensation from a prior recovery).

Note: launcher sagas have no Compensated terminal state today (per LSD spec §3.2 + §7 open question). F.5/F.6 sagas don’t auto-compensate; the schema CHECK constraint on launcher_saga.state intentionally omits 'compensated'. If a future class-D/E saga needs compensation, add the variant + matching CHECK constraint migration together — never one without the other.

Variants§

§

Completed

Saga ran to completion successfully. SagaAction::Done path.

§

Failed

Saga failed with no compensation having run.

Fields

§reason: String
§

FailedCompensation

Saga was unresolved at launcher restart and the recovery walker marked it as such. Distinct from Failed so operators can filter for “interesting” cases via --diag sagas. Constructed by PR LSD-3’s recovery walker (via mark_failed_compensation); included here for symmetry with the schema CHECK constraint.

Fields

§reason: String

Implementations§

Source§

impl SagaOutcome

Source

fn state_str(&self) -> &'static str

Source

fn reason(&self) -> Option<&str>

Trait Implementations§

Source§

impl Clone for SagaOutcome

Source§

fn clone(&self) -> SagaOutcome

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for SagaOutcome

Source§

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

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

impl PartialEq for SagaOutcome

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for SagaOutcome

Source§

impl StructuralPartialEq for SagaOutcome

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
§

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

§

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.

§

impl<T> Instrument for T

§

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

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

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 = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.
§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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