pub enum RedriveRefused {
Row(RedriveRefusal),
WorkflowTerminal {
workflow_id: WorkflowId,
status: WorkflowStatus,
},
HistoryRecordsOutcome {
workflow_id: WorkflowId,
activity_id: ActivityId,
ordinal: u64,
},
Store(StoreError),
}Expand description
Why a redrive did not happen, or could not be attempted.
Every variant is an explicit, typed refusal: a redrive request never resolves to a silent no-op, so an operator is never told “done” about work that was not re-queued.
Variants§
Row(RedriveRefusal)
The store refused the transition (absent row, not a dead letter, or already judged).
WorkflowTerminal
The owning workflow already reached a hard terminal, so its rows must be settled, never re-armed — re-dispatching one would serve a zombie round for a dead workflow.
Fields
workflow_id: WorkflowIdThe workflow that owns the dead letter.
status: WorkflowStatusThe status projected from its recorded history.
HistoryRecordsOutcome
The workflow’s recorded history already carries a terminal outcome for this activity, so judgment has passed even if the row’s judgment marker says otherwise (the crash window between delivering a failure and recording that it was delivered).
Fields
workflow_id: WorkflowIdThe workflow that owns the dead letter.
activity_id: ActivityIdThe activity the row dispatches.
Store(StoreError)
The store or history read failed; nothing was redriven.
Trait Implementations§
Source§impl Clone for RedriveRefused
impl Clone for RedriveRefused
Source§fn clone(&self) -> RedriveRefused
fn clone(&self) -> RedriveRefused
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 RedriveRefused
impl Debug for RedriveRefused
Source§impl Display for RedriveRefused
impl Display for RedriveRefused
impl Eq for RedriveRefused
Source§impl Error for RedriveRefused
impl Error for RedriveRefused
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Source§impl From<RedriveRefusal> for RedriveRefused
impl From<RedriveRefusal> for RedriveRefused
Source§fn from(source: RedriveRefusal) -> Self
fn from(source: RedriveRefusal) -> Self
Source§impl From<StoreError> for RedriveRefused
impl From<StoreError> for RedriveRefused
Source§fn from(source: StoreError) -> Self
fn from(source: StoreError) -> Self
Source§impl PartialEq for RedriveRefused
impl PartialEq for RedriveRefused
impl StructuralPartialEq for RedriveRefused
Auto Trait Implementations§
impl Freeze for RedriveRefused
impl RefUnwindSafe for RedriveRefused
impl Send for RedriveRefused
impl Sync for RedriveRefused
impl Unpin for RedriveRefused
impl UnsafeUnpin for RedriveRefused
impl UnwindSafe for RedriveRefused
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§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> 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