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,
},
MissingPlacementAuthority {
collection: CollectionId,
range_id: RangeId,
},
CollectionOutsidePlacementAuthority {
collection: CollectionId,
collection_group: CollectionGroupId,
authority: NodeIdentity,
},
WrongPlacementAuthority {
collection_group: CollectionGroupId,
expected: NodeIdentity,
actual: NodeIdentity,
},
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.
MissingPlacementAuthority
The scoped workflow was used without an authority token.
CollectionOutsidePlacementAuthority
The authority token does not cover this range’s collection.
WrongPlacementAuthority
A different Placement Authority attempted the scoped transition.
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)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
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
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::Request