pub enum LogicalApplyError {
Gap {
last: u64,
next: u64,
},
Divergence {
expected_term: u64,
got_term: u64,
lsn: u64,
expected: String,
got: String,
},
Apply {
lsn: u64,
source: RedDBError,
},
StaleTermFenced {
record_term: u64,
current_term: u64,
lsn: u64,
},
RangeFenced {
range_id: u64,
lsn: u64,
reason: RangeAdmitError,
},
}Variants§
Gap
Divergence
Apply
StaleTermFenced
Issue #835 — the record’s term is behind the replica’s current term: a returning ex-primary streaming on a stale, superseded term. Rejected at the apply boundary so the deposed primary cannot apply or advance any watermark until it re-syncs under the new term.
RangeFenced
Issue #991 — the record is stamped for a range whose authority
watermark has moved past it: a write from a deposed range owner
(stale ownership epoch) or a superseded timeline (stale term) for the
target range. Rejected at the apply boundary before the LSN state
machine runs — fail-closed, so a stale owner cannot apply or advance
the chain/watermark for that range. Shares the Fenced metrics lane
with the global stale-term fence.
Implementations§
Source§impl LogicalApplyError
impl LogicalApplyError
pub fn kind(&self) -> ApplyErrorKind
Trait Implementations§
Source§impl Debug for LogicalApplyError
impl Debug for LogicalApplyError
Source§impl Display for LogicalApplyError
impl Display for LogicalApplyError
Source§impl Error for LogicalApplyError
impl Error for LogicalApplyError
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()
Auto Trait Implementations§
impl !RefUnwindSafe for LogicalApplyError
impl !UnwindSafe for LogicalApplyError
impl Freeze for LogicalApplyError
impl Send for LogicalApplyError
impl Sync for LogicalApplyError
impl Unpin for LogicalApplyError
impl UnsafeUnpin for LogicalApplyError
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> 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.