Skip to main content

FailoverPolicy

Struct FailoverPolicy 

pub struct FailoverPolicy { /* private fields */ }
Expand description

Stateful stale-owner policy for repeated fail_over_stale sweeps.

A policy must be reused across sweeps. Staleness is proved by observing the same complete lease twice, at least grace_millis apart on the sweeper’s local monotonic clock. Owner and sweeper wall clocks are never compared. This deliberately adds one grace interval after a sweeper first discovers an abandoned lease; a clock-skewed healthy owner cannot be stolen merely because its heartbeat timestamp is far behind another node’s clock. The worker is used in the explanatory error, and requeue controls whether the failed configuration is created again as a waiting trial.

use atune_core::id::WorkerId;
use atune_core::storage::FailoverPolicy;

let policy = FailoverPolicy::new(60_000, WorkerId::new(7)).with_requeue(true);
assert_eq!(policy.grace_millis(), 60_000);
assert_eq!(policy.worker(), WorkerId::new(7));
assert!(policy.requeue());

Implementations§

§

impl FailoverPolicy

pub fn new(grace_millis: u64, worker: WorkerId) -> Self

Creates a policy with requeueing disabled.

pub fn with_requeue(self, requeue: bool) -> Self

Sets whether successfully failed-over configurations are re-enqueued.

pub const fn grace_millis(&self) -> u64

Returns the heartbeat grace period in milliseconds.

pub const fn worker(&self) -> WorkerId

Returns the worker identity written into fail-over messages.

pub const fn requeue(&self) -> bool

Returns whether failed-over configurations are re-enqueued.

Trait Implementations§

§

impl Debug for FailoverPolicy

§

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

Formats the value using the given formatter. Read more

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
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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.

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more