pub enum MoveError {
UnknownRange {
collection: CollectionId,
range_id: RangeId,
},
TargetIsOwner {
collection: CollectionId,
range_id: RangeId,
owner: NodeIdentity,
},
WrongPhase {
expected: &'static str,
actual: MovePhase,
},
TargetBehindWatermark {
collection: CollectionId,
range_id: RangeId,
target: NodeIdentity,
watermark: CommitWatermark,
applied_term: u64,
applied_lsn: u64,
},
Catalog(CatalogError),
Transition(TransitionError),
}Expand description
Why a move-range step failed. Every variant that can be returned before the fenced handoff leaves the catalog untouched.
Variants§
UnknownRange
No range with this (collection, range_id) exists in the catalog.
TargetIsOwner
The move target is already the range’s owner — a no-op move.
WrongPhase
A move step was attempted from the wrong phase (e.g. cutting over before a snapshot was installed).
TargetBehindWatermark
Cutover was attempted but the target’s applied log does not yet cover the live commit watermark — refused, the catalog untouched.
Catalog(CatalogError)
A catalog write (replica enlistment) was rejected.
Transition(TransitionError)
The fenced handoff transition was rejected (a CAS or safety failure) or the activation write failed.
Trait Implementations§
impl Eq for MoveError
Source§impl Error for MoveError
impl Error for MoveError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
👎Deprecated since 1.42.0:
use the Display impl or to_string()
impl StructuralPartialEq for MoveError
Auto Trait Implementations§
impl Freeze for MoveError
impl RefUnwindSafe for MoveError
impl Send for MoveError
impl Sync for MoveError
impl Unpin for MoveError
impl UnsafeUnpin for MoveError
impl UnwindSafe for MoveError
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
Mutably borrows from an owned value. Read more
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
Compare self to
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>
Converts
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>
Converts
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>
Wrap the input message
T in a tonic::Request