Skip to main content

CommitLock

Trait CommitLock 

Source
pub trait CommitLock: Debug {
    type Lease: CommitLease;

    // Required method
    fn lock<'life0, 'async_trait>(
        &'life0 self,
        version: u64,
    ) -> Pin<Box<dyn Future<Output = Result<Self::Lease, CommitError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
}
Expand description

A commit implementation that uses a lock to prevent conflicting writes.

Required Associated Types§

Required Methods§

Source

fn lock<'life0, 'async_trait>( &'life0 self, version: u64, ) -> Pin<Box<dyn Future<Output = Result<Self::Lease, CommitError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Attempt to lock the table for the given version.

If it is already locked by another transaction, wait until it is unlocked. Once it is unlocked, return CommitError::CommitConflict if the version has already been committed. Otherwise, return the lock.

To prevent poisoned locks, it’s recommended to set a timeout on the lock of at least 30 seconds.

It is not required that the lock tracks the version. It is provided in case the locking is handled by a catalog service that needs to know the current version of the table.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§