pub enum ActivityCompletionOutcome {
Succeeded(Payload),
Failed(ActivityError),
WorkerLost {
worker_id: WorkerId,
},
Refused {
worker_id: WorkerId,
reason: String,
},
}Expand description
Decoded activity outcome reported by a worker.
Variants§
Succeeded(Payload)
Activity completed successfully with an output payload.
Failed(ActivityError)
Activity failed, preserving retryability classification for the engine.
WorkerLost
The worker was lost BEFORE the activity reported any result — a TRANSPORT-domain loss, not an activity failure.
A distinct variant rather than a Failed wearing a retryable kind,
because the two are different failure domains and were being conflated:
a synthesized retryable:worker ... lost was delivered verbatim as a
TERMINAL failure whenever the activity carried no authored retry policy,
so every infrastructure death read as a red action. The classification
and the transport’s own re-dispatch budget live in
transport_loss.
Refused
The worker HANDED THE TASK BACK because it had no free execution slot —
a TRANSPORT-domain non-start, like Self::WorkerLost, and for the
same reason: the activity never ran.
A distinct variant rather than a WorkerLost wearing a different
message, because nothing is lost and nobody died: the worker is
connected, healthy, and working, and the operator reading this must not
be told a worker went away. What the two share is the ENGINE-facing
consequence — re-dispatch, attempt-neutral, nothing recorded against the
action’s budget — so both are classified through the transport domain.
The server should not be able to produce this: it knows every worker’s advertised capacity and does not select one that has reached it. It exists because the two accountings CAN drift — a reconnect race, a redelivery joining an outstanding generation — and a drifted count must not become a false failure.
Trait Implementations§
Source§impl Clone for ActivityCompletionOutcome
impl Clone for ActivityCompletionOutcome
Source§fn clone(&self) -> ActivityCompletionOutcome
fn clone(&self) -> ActivityCompletionOutcome
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ActivityCompletionOutcome
impl Debug for ActivityCompletionOutcome
impl Eq for ActivityCompletionOutcome
impl StructuralPartialEq for ActivityCompletionOutcome
Auto Trait Implementations§
impl Freeze for ActivityCompletionOutcome
impl RefUnwindSafe for ActivityCompletionOutcome
impl Send for ActivityCompletionOutcome
impl Sync for ActivityCompletionOutcome
impl Unpin for ActivityCompletionOutcome
impl UnsafeUnpin for ActivityCompletionOutcome
impl UnwindSafe for ActivityCompletionOutcome
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoMaybeUndefined<T> for T
impl<T> IntoMaybeUndefined<T> for T
Source§fn into_maybe_undefined(self) -> MaybeUndefined<T>
fn into_maybe_undefined(self) -> MaybeUndefined<T>
Source§impl<T> IntoOption<T> for T
impl<T> IntoOption<T> for T
Source§fn into_option(self) -> Option<T>
fn into_option(self) -> Option<T>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request