pub enum SplitError {
Tablet(TabletError),
Fault(Fault),
MetaPlane(MetaRejectionReason),
TabletData(TabletDataError),
SourceNotActive {
tablet: TabletId,
state: TabletState,
},
UnboundedMidpoint,
UnsplittableBounds,
InvalidSplitKey {
key: Key,
},
InvalidPlan(String),
KeyOutsideSource(Key),
SourceRetained {
tablet: TabletId,
pins: usize,
},
CannotAbort {
tablet: TabletId,
phase: SplitPhase,
},
}Expand description
The one error type of the split surface: planning, execution, and resume.
Variants§
Tablet(TabletError)
Descriptor, layout, or persisted-progress failure. Always fail closed.
Fault(Fault)
An armed fault hook fired (crash-resume tests).
MetaPlane(MetaRejectionReason)
The meta plane refused a descriptor write or the publication.
TabletData(TabletDataError)
A keyspace or child-sink seam operation failed.
SourceNotActive
The split was initiated against a source that is not serving.
UnboundedMidpoint
A midpoint cannot be derived when either endpoint is unbounded.
UnsplittableBounds
No key lies strictly between the two endpoints (immediate successors).
InvalidSplitKey
The explicit split key does not partition the source into two halves.
InvalidPlan(String)
The plan is structurally inconsistent.
KeyOutsideSource(Key)
The applied keyspace holds a key outside the source partition (the children cannot own it; fail closed instead of dropping it).
SourceRetained
Step 10’s release condition is not met yet; retry when the pins drain.
CannotAbort
The split already published its routing change (spec section 12.5
step 8); rolling it back would double-serve the keyspace. Only a
split that has not reached SplitPhase::Published can abort.
Fields
phase: SplitPhaseThe phase the split had durably reached.
Trait Implementations§
Source§impl Debug for SplitError
impl Debug for SplitError
Source§impl Display for SplitError
impl Display for SplitError
Source§impl Error for SplitError
impl Error for SplitError
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 From<Fault> for SplitError
impl From<Fault> for SplitError
Source§impl From<MetaRejectionReason> for SplitError
impl From<MetaRejectionReason> for SplitError
Source§fn from(source: MetaRejectionReason) -> Self
fn from(source: MetaRejectionReason) -> Self
Source§impl From<SplitError> for RuntimeError
impl From<SplitError> for RuntimeError
Source§fn from(source: SplitError) -> Self
fn from(source: SplitError) -> Self
Source§impl From<TabletDataError> for SplitError
impl From<TabletDataError> for SplitError
Source§fn from(source: TabletDataError) -> Self
fn from(source: TabletDataError) -> Self
Source§impl From<TabletError> for SplitError
impl From<TabletError> for SplitError
Source§fn from(source: TabletError) -> Self
fn from(source: TabletError) -> Self
Auto Trait Implementations§
impl !RefUnwindSafe for SplitError
impl !UnwindSafe for SplitError
impl Freeze for SplitError
impl Send for SplitError
impl Sync for SplitError
impl Unpin for SplitError
impl UnsafeUnpin for SplitError
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> 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> 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