pub struct DurableVoteState {
pub term: ControlPlaneTerm,
pub voted_for: Option<ClusterVoterIdentity>,
}Expand description
The durable per-node vote state every voting member must persist before acknowledging a vote, so a member that crashes and restarts mid-term cannot double-vote and split a term (ADR 0030: “the supervisor needs durable per-node vote state (last-vote) to prevent double-voting across restarts”).
This is the control-plane analogue of
crate::replication::election::LastVote; it is named here as a required
part of the consensus boundary so a follow-up slice cannot ship a leader
election without it.
Fields§
§term: ControlPlaneTermThe highest term this member has voted in.
voted_for: Option<ClusterVoterIdentity>Who this member granted its vote to in term, if anyone. None means
the member has seen term but not yet voted in it.
Implementations§
Trait Implementations§
Source§impl Clone for DurableVoteState
impl Clone for DurableVoteState
Source§fn clone(&self) -> DurableVoteState
fn clone(&self) -> DurableVoteState
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for DurableVoteState
impl Debug for DurableVoteState
impl Eq for DurableVoteState
Source§impl PartialEq for DurableVoteState
impl PartialEq for DurableVoteState
Source§fn eq(&self, other: &DurableVoteState) -> bool
fn eq(&self, other: &DurableVoteState) -> bool
Tests for
self and other values to be equal, and is used by ==.impl StructuralPartialEq for DurableVoteState
Auto Trait Implementations§
impl Freeze for DurableVoteState
impl RefUnwindSafe for DurableVoteState
impl Send for DurableVoteState
impl Sync for DurableVoteState
impl Unpin for DurableVoteState
impl UnsafeUnpin for DurableVoteState
impl UnwindSafe for DurableVoteState
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
Mutably borrows from an owned value. Read more
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
Compare self to
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>
Converts
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>
Converts
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>
Wrap the input message
T in a tonic::Request