LeaderState

Struct LeaderState 

Source
pub struct LeaderState {
    pub ballot: u64,
    pub leader_id: String,
    pub priority: i32,
    pub lease_expiry_nanos: u64,
    pub versionstamp: [u8; 12],
}
Expand description

The core leader state - stored at a single key

Contains all information needed to determine leadership without scanning candidates.

§Ballot Numbers

The ballot number works like Raft’s term:

  • Monotonically increasing counter
  • Higher ballot always wins
  • Prevents split-brain after recovery/partition
  • Incremented on every leadership claim or refresh

Fields§

§ballot: u64

Ballot number (like Raft’s term)

Always increments when claiming or refreshing leadership. Higher ballot wins in any conflict.

§leader_id: String

Unique identifier of the leader process

§priority: i32

Leader’s priority (higher = more preferred)

Used for preemption decisions when allow_preemption is enabled.

§lease_expiry_nanos: u64

Absolute timestamp when lease expires (nanos since epoch)

Leadership is only valid while current_time < lease_expiry_nanos.

§versionstamp: [u8; 12]

Versionstamp assigned when this process registered

Used for identity consistency and ordering.

Implementations§

Source§

impl LeaderState

Source

pub fn is_lease_valid(&self, current_time: Duration) -> bool

Check if the lease is still valid

§Arguments
  • current_time - Current time as Duration since epoch
§Returns

true if the lease has not expired

Source

pub fn remaining_lease(&self, current_time: Duration) -> Option<Duration>

Get remaining lease duration, if any

§Arguments
  • current_time - Current time as Duration since epoch
§Returns

Some(Duration) if lease is still valid, None if expired

Trait Implementations§

Source§

impl Clone for LeaderState

Source§

fn clone(&self) -> LeaderState

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for LeaderState

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for LeaderState

Source§

fn eq(&self, other: &LeaderState) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for LeaderState

Source§

impl StructuralPartialEq for LeaderState

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V