Skip to main content

WriteSetLocks

Struct WriteSetLocks 

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

Bundle of per-record locks held by a single writer’s commit critical section. Holding the locks here (rather than scattered MutexGuards) makes drop order deterministic — all locks release when this struct drops, regardless of which release path (commit / abort / panic) the writer took.

Lock acquisition is always sorted by id so any two transactions touching the same record set acquire the locks in the same order. That’s the standard prevention strategy for the simplest deadlock scenario — two writers each holding one of the other’s locks.

Implementations§

Source§

impl WriteSetLocks

Source

pub fn acquire(table: &LockTable, write_set: &MutationWriteSet) -> Self

Acquire write locks for every record in the write set, sorted by id. Returns once all locks are held; the caller’s commit runs without contention on these records until WriteSetLocks drops.

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, 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 = 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.