#[non_exhaustive]pub enum ContentionKind {
Show 18 variants
UseClaimResumedExecution,
NotAResumedExecution,
ExecutionNotLeaseable,
LeaseConflict,
InvalidClaimGrant,
ClaimGrantExpired,
NoEligibleExecution,
WaitpointNotFound,
WaitpointPendingUseBufferScript,
StaleGraphRevision,
ExecutionNotActive {
terminal_outcome: String,
lease_epoch: String,
lifecycle_phase: String,
attempt_id: String,
},
ExecutionNotEligible,
ExecutionNotInEligibleSet,
ExecutionNotReclaimable,
NoActiveLease,
RateLimitExceeded,
ConcurrencyLimitExceeded,
RetryExhausted,
}Expand description
Contention sub-kinds (retryable per RFC-010 §10.7). Caller should re-dispatch or re-read and retry.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
UseClaimResumedExecution
Re-dispatch to claim_resumed_execution.
NotAResumedExecution
Re-dispatch to claim_execution.
ExecutionNotLeaseable
State changed since grant. Request new grant.
LeaseConflict
Another worker holds lease. Request a different execution.
InvalidClaimGrant
Grant missing/mismatched. Request new grant.
ClaimGrantExpired
Grant TTL elapsed. Request new grant.
NoEligibleExecution
No execution currently available.
WaitpointNotFound
Waitpoint may not exist yet. Retry with backoff.
WaitpointPendingUseBufferScript
Route to buffer_signal_for_pending_waitpoint.
StaleGraphRevision
Graph revision changed. Re-read adjacency, retry.
ExecutionNotActive
Execution is not in active state (lease superseded, etc.)
Carries the Lua-side detail payload for replay reconciliation.
ExecutionNotEligible
State changed. Scheduler skips.
ExecutionNotInEligibleSet
Removed by another scheduler.
ExecutionNotReclaimable
Already reclaimed/cancelled. Skip.
NoActiveLease
Target has no active lease (already revoked/expired/unowned).
RateLimitExceeded
Window full; caller should backoff retry_after_ms.
ConcurrencyLimitExceeded
Concurrency cap hit.
RetryExhausted
Returned after 3 attempts of a SERIALIZABLE transaction in
Postgres (cancel_flow, deliver_signal, suspend). Caller
falls back to the appropriate reconciler.
Classified Retryable via the blanket Contention(_) arm so
consumer retry-loops don’t treat it as terminal; the
reconciler backstop catches repeat exhaustion.
Trait Implementations§
Source§impl Clone for ContentionKind
impl Clone for ContentionKind
Source§fn clone(&self) -> ContentionKind
fn clone(&self) -> ContentionKind
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ContentionKind
impl Debug for ContentionKind
Source§impl PartialEq for ContentionKind
impl PartialEq for ContentionKind
impl Eq for ContentionKind
impl StructuralPartialEq for ContentionKind
Auto Trait Implementations§
impl Freeze for ContentionKind
impl RefUnwindSafe for ContentionKind
impl Send for ContentionKind
impl Sync for ContentionKind
impl Unpin for ContentionKind
impl UnsafeUnpin for ContentionKind
impl UnwindSafe for ContentionKind
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
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<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> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more