pub struct RangeAuthority {
pub range_id: u64,
pub min_term: u64,
pub min_ownership_epoch: u64,
}Expand description
Issue #991 — the range-authority watermark a replica or recovery target holds for a single range: the minimum term and ownership epoch it will accept for that range’s user-data changes.
The physical WAL stays the source of truth; this fence operates purely on
the derived metadata each ChangeRecord carries. A record stamped for
this range whose term or ownership epoch is behind the watermark is a write
from a stale (deposed) owner or a superseded timeline and must be rejected
before it is applied. Records for a different range, or records with no
range identity at all (legacy / non-range-replicated), are not this fence’s
concern and pass through untouched.
Fields§
§range_id: u64§min_term: u64§min_ownership_epoch: u64Implementations§
Source§impl RangeAuthority
impl RangeAuthority
Sourcepub fn admit(&self, record: &ChangeRecord) -> Result<(), RangeAdmitError>
pub fn admit(&self, record: &ChangeRecord) -> Result<(), RangeAdmitError>
Decide whether record may be applied to this range. Only records
explicitly stamped for self.range_id are gated; everything else is
admitted. Term is checked before epoch so a stale timeline is reported
as such even when its epoch also lags.
Trait Implementations§
Source§impl Clone for RangeAuthority
impl Clone for RangeAuthority
Source§fn clone(&self) -> RangeAuthority
fn clone(&self) -> RangeAuthority
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for RangeAuthority
Source§impl Debug for RangeAuthority
impl Debug for RangeAuthority
impl Eq for RangeAuthority
Source§impl PartialEq for RangeAuthority
impl PartialEq for RangeAuthority
Source§fn eq(&self, other: &RangeAuthority) -> bool
fn eq(&self, other: &RangeAuthority) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for RangeAuthority
Auto Trait Implementations§
impl Freeze for RangeAuthority
impl RefUnwindSafe for RangeAuthority
impl Send for RangeAuthority
impl Sync for RangeAuthority
impl Unpin for RangeAuthority
impl UnsafeUnpin for RangeAuthority
impl UnwindSafe for RangeAuthority
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