pub struct CrossProcessLock<L>{ /* private fields */ }Expand description
A cross-process lock implementation.
See the doc-comment of this module for more information.
Implementations§
Source§impl<L> CrossProcessLock<L>
impl<L> CrossProcessLock<L>
Sourcepub fn new(locker: L, lock_key: String, lock_holder: String) -> Self
pub fn new(locker: L, lock_key: String, lock_holder: String) -> Self
Create a new cross-process lock.
§Parameters
lock_key: key in the key-value store to store the lock’s state.lock_holder: identify the lock’s holder with this given value.
Sourcepub fn is_dirty(&self) -> bool
pub fn is_dirty(&self) -> bool
Determine whether the cross-process lock is dirty.
See CrossProcessLockState::Dirty to learn more about the semantics
of dirty.
Sourcepub fn clear_dirty(&self)
pub fn clear_dirty(&self)
Clear the dirty state from this cross-process lock.
If the cross-process lock is dirtied, it will remain dirtied until this method is called. This allows recovering from a dirty state and marking that it has recovered.
Sourcepub async fn try_lock_once(
&self,
) -> Result<Result<CrossProcessLockState, CrossProcessLockUnobtained>, L::LockError>
pub async fn try_lock_once( &self, ) -> Result<Result<CrossProcessLockState, CrossProcessLockUnobtained>, L::LockError>
Try to lock once, returns whether the lock was obtained or not.
The lock can be obtained but it can be dirty. In all cases, the renew task will run in the background.
Sourcepub async fn spin_lock(
&self,
max_backoff: Option<u32>,
) -> Result<Result<CrossProcessLockState, CrossProcessLockUnobtained>, L::LockError>
pub async fn spin_lock( &self, max_backoff: Option<u32>, ) -> Result<Result<CrossProcessLockState, CrossProcessLockUnobtained>, L::LockError>
Attempt to take the lock, with exponential backoff if the lock has already been taken before.
The max_backoff parameter is the maximum time (in milliseconds) that
should be waited for, between two attempts. When that time is
reached a second time, the lock will stop attempting to get the lock
and will return a timeout error upon locking. If not provided,
will wait for MAX_BACKOFF_MS.
Sourcepub fn lock_holder(&self) -> &str
pub fn lock_holder(&self) -> &str
Returns the value in the database that represents the holder’s identifier.
Trait Implementations§
Source§impl<L> Clone for CrossProcessLock<L>
impl<L> Clone for CrossProcessLock<L>
Source§fn clone(&self) -> CrossProcessLock<L>
fn clone(&self) -> CrossProcessLock<L>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more