Skip to main content

LeaseGuard

Struct LeaseGuard 

Source
pub struct LeaseGuard { /* private fields */ }
Expand description

Proof of a won round, returned by ExportLease::try_acquire.

There is nothing to release — the round runs until the lease expires (that is the round period). Call complete after the artifact is safely uploaded to publish what was exported.

Implementations§

Source§

impl LeaseGuard

Source

pub fn record(&self) -> &LeaseRecord

The record this guard wrote when it won the round.

Source

pub async fn abandon(self)

Give the round back early: a failed export/upload should not suppress the fleet for the rest of the ttl. CAS-deletes the lease (tombstone) against this guard’s version, so the next trigger on any node can win a fresh round immediately.

Best-effort: a CAS conflict (someone already took over) or write error is logged, not surfaced — worst case the round waits out its ttl, which is the no-abandon behavior anyway.

An unawaited abandon() does nothing (and would trip the Drop warning); the future’s inherent #[must_use] plus this crate’s deny(unused_must_use) make that a compile error, not a silent leak.

Source

pub async fn complete(self, cursor: &WatchCursor) -> Result<(), KvError>

Publish the round’s outcome: rewrite the lease value with the exported cursor and completion time (expiry unchanged — the round still runs its full period).

Best-effort observability: a CAS conflict means the lease was already taken over (this round overran its ttl) and is logged, not surfaced — the artifact is already safe wherever the caller put it.

An unawaited complete() records nothing (and would trip the Drop warning); the future’s inherent #[must_use] plus this crate’s deny(unused_must_use) make that a compile error, not a silent leak.

Trait Implementations§

Source§

impl Drop for LeaseGuard

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. 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
Source§

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

Source§

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.

Source§

impl<T> Instrument for T

Source§

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

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

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.

Source§

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

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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.
Source§

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

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

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
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

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