#[non_exhaustive]pub enum SplitLossReason {
Fenced,
Starved,
Revoked,
}Expand description
Why a split lease was lost involuntarily (the reason label on
spate_coordination_split_losses_total).
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Fenced
A write was rejected — a peer holds a higher lease epoch.
Starved
Self-fenced: no successful lease write for a full lease duration.
Revoked
A cooperative drain that never completed, so this worker forced its
own release. Either the leader had stopped assigning the split and
the source declined or outran drain_deadline, or the leader took
the revocation back (RevocationOutcome::Cancelled) and the drain
it left behind then went a full drain_deadline without committing
anything — a stalled drain releases too, or the split would stay
owned with nothing reading it.
The split’s uncommitted tail replays under its next owner (for the
cancelled case, usually this same worker): the bounded-replay
outcome the cooperative path exists to avoid, and therefore a signal
that drain_deadline is too tight for this source’s commit
interval, or that a lane is wedged.
Narrower than RevocationOutcome::Forced, which also covers a
revocation whose split was fenced away mid-drain; that one is lost
as Fenced, because a peer — not this
worker — ended the tenancy.
Trait Implementations§
Source§impl Clone for SplitLossReason
impl Clone for SplitLossReason
Source§fn clone(&self) -> SplitLossReason
fn clone(&self) -> SplitLossReason
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for SplitLossReason
Source§impl Debug for SplitLossReason
impl Debug for SplitLossReason
impl Eq for SplitLossReason
Source§impl PartialEq for SplitLossReason
impl PartialEq for SplitLossReason
impl StructuralPartialEq for SplitLossReason
Auto Trait Implementations§
impl Freeze for SplitLossReason
impl RefUnwindSafe for SplitLossReason
impl Send for SplitLossReason
impl Sync for SplitLossReason
impl Unpin for SplitLossReason
impl UnsafeUnpin for SplitLossReason
impl UnwindSafe for SplitLossReason
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.