Skip to main content

LockGuard

Struct LockGuard 

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

A held distributed lock.

The lock is released when the guard is dropped (background, best-effort) or via LockGuard::unlock (awaited). While held, a supervised watchdog renews the lease automatically; if renewal fails the guard becomes poisoned and LockGuard::fencing_token / LockGuard::extend start returning errors.

Implementations§

Source§

impl LockGuard

Source

pub fn fencing_token(&self) -> Result<u64>

The strictly-monotonic fencing token for this lock.

§Errors

Returns Error::LeaseExpired if the guard has been poisoned by a failed renewal — the token must not be used to authorise writes.

Source

pub fn resource(&self) -> &str

The resource key this guard locks.

Source

pub fn acquired_at(&self) -> Stamp

The causal stamp recorded when the lock was acquired.

Backed by the ash-time Hybrid Logical Clock when that feature is enabled; otherwise a local monotonic counter. Useful for ordering lock events in logs/audit trails across nodes.

Source

pub async fn extend(&self, new_ttl: Duration) -> Result<()>

Manually extend the lease by new_ttl from now. On success the watchdog adopts new_ttl for all subsequent renewals, so the extension is not undone at the next renewal tick.

§Errors

Fails if the guard is poisoned, or if the backend rejects the renewal (stale token / expired lease).

Source

pub async fn unlock(self) -> Result<()>

Release the lock, awaiting confirmation.

Trait Implementations§

Source§

impl Drop for LockGuard

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<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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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