pub struct LeaderLeaseManager { /* private fields */ }Expand description
Acquires and renews leadership while candidacy remains true.
Implementations§
Source§impl LeaderLeaseManager
impl LeaderLeaseManager
Sourcepub fn new(
store: Arc<LeaderLeaseStore>,
process_lease: &ProcessLease,
config: LeaderLeaseConfig,
) -> Result<Self, LeaseError>
pub fn new( store: Arc<LeaderLeaseStore>, process_lease: &ProcessLease, config: LeaderLeaseConfig, ) -> Result<Self, LeaseError>
Construct a manager bound to this boot’s acquired stable-node process lease.
§Errors
Rejects invalid ownership or inconsistent renewal timings.
Sourcepub fn owner(&self) -> &LeaderLeaseOwner
pub fn owner(&self) -> &LeaderLeaseOwner
Exact process incarnation this manager may publish.
Sourcepub fn lease_watch(&self) -> Receiver<Option<LeaderLease>>
pub fn lease_watch(&self) -> Receiver<Option<LeaderLease>>
Subscribe to the locally authorized leader record.
Sourcepub fn deadline(&self) -> Arc<LeaseDeadline> ⓘ
pub fn deadline(&self) -> Arc<LeaseDeadline> ⓘ
Snapshot the current local-monotonic deadline generation.
This is useful before the manager starts and in fixed-generation tests. A running manager
may replace it after any discontinuous grant; runtime consumers must subscribe through
Self::deadline_watch.
Sourcepub fn deadline_watch(&self) -> Receiver<Arc<LeaseDeadline>>
pub fn deadline_watch(&self) -> Receiver<Arc<LeaseDeadline>>
Subscribe to generation-scoped local leader deadlines.
A discontinuous grant permanently fences the previous deadline and publishes a fresh inactive one before another durable fencing term can become locally authoritative.
Sourcepub fn spawn(
self,
shutdown: CancellationToken,
candidate: Receiver<LeaderCandidacy>,
) -> JoinHandle<()> ⓘ
pub fn spawn( self, shutdown: CancellationToken, candidate: Receiver<LeaderCandidacy>, ) -> JoinHandle<()> ⓘ
Spawn the renewal loop. Loss of candidacy withdraws the current local grant so this manager can contend again later. A missed local deadline withdraws the grant and rotates its fencing token before reacquisition. Shutdown or an invalid lease outcome terminally fences the manager.
Sourcepub fn spawn_supervised(
self,
shutdown: CancellationToken,
candidate: Receiver<LeaderCandidacy>,
unexpected_exit: CancellationToken,
) -> JoinHandle<()> ⓘ
pub fn spawn_supervised( self, shutdown: CancellationToken, candidate: Receiver<LeaderCandidacy>, unexpected_exit: CancellationToken, ) -> JoinHandle<()> ⓘ
Spawn the renewal loop and signal any exit not preceded by intentional shutdown.
The guard lives inside the same task as the manager future, so panic and forced task abort cannot detach a still-running inner lease writer.
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for LeaderLeaseManager
impl !UnwindSafe for LeaderLeaseManager
impl Freeze for LeaderLeaseManager
impl Send for LeaderLeaseManager
impl Sync for LeaderLeaseManager
impl Unpin for LeaderLeaseManager
impl UnsafeUnpin for LeaderLeaseManager
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> 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 more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].