pub struct OwnershipTransition {
pub range: String,
pub new_owner: ClusterVoterIdentity,
pub ownership_epoch: u64,
}Expand description
The shard/range ownership-catalog change recorded by a single control-plane log entry. This is deliberately the fact of a fenced transition, not the full catalog schema (that lives with ADR 0037 / ADR 0045 follow-ups): the boundary this module fixes is only that ownership transitions are control-plane log entries written by the leader, with an ownership epoch that fences the old owner.
Fields§
§range: StringThe range whose ownership is changing, named opaquely here so this boundary type does not pin the range-id encoding the catalog slice owns.
new_owner: ClusterVoterIdentityThe new owner after the transition.
ownership_epoch: u64The ownership epoch the transition bumps to. A monotonic epoch is what fences a stale owner that reappears (ADR 0037 “Fencing is enforced below routing”); recording it in the consensus log makes the fence durable.
Trait Implementations§
Source§impl Clone for OwnershipTransition
impl Clone for OwnershipTransition
Source§fn clone(&self) -> OwnershipTransition
fn clone(&self) -> OwnershipTransition
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for OwnershipTransition
impl Debug for OwnershipTransition
impl Eq for OwnershipTransition
Source§impl PartialEq for OwnershipTransition
impl PartialEq for OwnershipTransition
Source§fn eq(&self, other: &OwnershipTransition) -> bool
fn eq(&self, other: &OwnershipTransition) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for OwnershipTransition
Auto Trait Implementations§
impl Freeze for OwnershipTransition
impl RefUnwindSafe for OwnershipTransition
impl Send for OwnershipTransition
impl Sync for OwnershipTransition
impl Unpin for OwnershipTransition
impl UnsafeUnpin for OwnershipTransition
impl UnwindSafe for OwnershipTransition
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