Struct tikv::server::lock_manager::waiter_manager::WaiterManager[][src]

pub struct WaiterManager {
    wait_table: Rc<RefCell<WaitTable>>,
    detector_scheduler: DetectorScheduler,
    default_wait_for_lock_timeout: ReadableDuration,
    wake_up_delay_duration: ReadableDuration,
}

WaiterManager handles waiting and wake-up of pessimistic lock

Fields

wait_table: Rc<RefCell<WaitTable>>detector_scheduler: DetectorSchedulerdefault_wait_for_lock_timeout: ReadableDuration

It is the default and maximum timeout of waiter.

wake_up_delay_duration: ReadableDuration

If more than one waiters are waiting for the same lock, only the oldest one will be waked up immediately when the lock is released. Others will be waked up after wake_up_delay_duration to reduce contention and make the oldest one more likely acquires the lock.

Implementations

impl WaiterManager[src]

pub fn new(
    waiter_count: Arc<AtomicUsize>,
    detector_scheduler: DetectorScheduler,
    cfg: &Config
) -> Self
[src]

pub fn normalize_deadline(&self, timeout: WaitTimeout) -> Instant[src]

fn handle_wait_for(&mut self, waiter: Waiter)[src]

fn handle_wake_up(
    &mut self,
    lock_ts: TimeStamp,
    hashes: Vec<u64>,
    commit_ts: TimeStamp
)
[src]

fn handle_dump(&self, cb: Callback)[src]

fn handle_deadlock(
    &mut self,
    waiter_ts: TimeStamp,
    lock: Lock,
    deadlock_key_hash: u64,
    wait_chain: Vec<WaitForEntry>
)
[src]

fn handle_config_change(
    &mut self,
    timeout: Option<ReadableDuration>,
    delay: Option<ReadableDuration>
)
[src]

Trait Implementations

impl Runnable<Task> for WaiterManager[src]

impl Send for WaiterManager[src]

Auto Trait Implementations

impl !RefUnwindSafe for WaiterManager

impl !Sync for WaiterManager

impl Unpin for WaiterManager

impl !UnwindSafe for WaiterManager

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<V, W> ConvertFrom<W> for V where
    W: ConvertTo<V>, 
[src]

impl<T> From<T> for T[src]

impl<T> Instrument for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Pointable for T[src]

type Init = T

The type for initializers.

impl<T> Pointable for T[src]

type Init = T

The type for initializers.

impl<T> Same<T> for T[src]

type Output = T

Should always be Self

impl<T> Sealed<T> for T where
    T: ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>, 
[src]