pub enum DurableWriteReject {
NoRange {
collection: CollectionId,
},
StaleOwnership {
collection: CollectionId,
range_id: RangeId,
attempted_owner: NodeIdentity,
current_owner: NodeIdentity,
attempted_epoch: OwnershipEpoch,
current_epoch: OwnershipEpoch,
},
NotOwner {
collection: CollectionId,
range_id: RangeId,
role: RangeRole,
owner: NodeIdentity,
epoch: OwnershipEpoch,
version: CatalogVersion,
},
Fenced {
collection: CollectionId,
range_id: RangeId,
reason: FenceReason,
},
}Expand description
Why a lease-gated durable write was rejected — either the catalog ownership gate refused it (routing / not-owner), or the owner is self-fenced.
Variants§
NoRange
No range of the collection covers the routed key — re-resolve routing.
Fields
collection: CollectionIdStaleOwnership
This node previously held ownership for the range, but the catalog has advanced to a newer owner/epoch. Carries both ownership identities and epochs so callers can distinguish stale ownership from an ordinary non-owner write.
Fields
collection: CollectionIdattempted_owner: NodeIdentitycurrent_owner: NodeIdentityattempted_epoch: OwnershipEpochcurrent_epoch: OwnershipEpochNotOwner
This node is not the catalog owner of the routed range (it is a replica or
holds no copy). The write must be routed to owner.
Fenced
This node is the catalog owner, but it is self-fenced: it holds no valid
lease for the range. Carries the FenceReason.
Trait Implementations§
Source§impl Clone for DurableWriteReject
impl Clone for DurableWriteReject
Source§fn clone(&self) -> DurableWriteReject
fn clone(&self) -> DurableWriteReject
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 DurableWriteReject
impl Debug for DurableWriteReject
Source§impl Display for DurableWriteReject
impl Display for DurableWriteReject
impl Eq for DurableWriteReject
Source§impl Error for DurableWriteReject
impl Error for DurableWriteReject
1.30.0 · 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 PartialEq for DurableWriteReject
impl PartialEq for DurableWriteReject
impl StructuralPartialEq for DurableWriteReject
Auto Trait Implementations§
impl Freeze for DurableWriteReject
impl RefUnwindSafe for DurableWriteReject
impl Send for DurableWriteReject
impl Sync for DurableWriteReject
impl Unpin for DurableWriteReject
impl UnsafeUnpin for DurableWriteReject
impl UnwindSafe for DurableWriteReject
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.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 moreSource§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::RequestSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
Source§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string, but without panic on OOM.