Struct tikv::server::lock_manager::waiter_manager::WaiterManager [−][src]
WaiterManager handles waiting and wake-up of pessimistic lock
Fields
wait_table: Rc<RefCell<WaitTable>>
detector_scheduler: DetectorScheduler
default_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]
waiter_count: Arc<AtomicUsize>,
detector_scheduler: DetectorScheduler,
cfg: &Config
) -> Self
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]
&mut self,
lock_ts: TimeStamp,
hashes: Vec<u64>,
commit_ts: TimeStamp
)
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]
&mut self,
waiter_ts: TimeStamp,
lock: Lock,
deadlock_key_hash: u64,
wait_chain: Vec<WaitForEntry>
)
fn handle_config_change(
&mut self,
timeout: Option<ReadableDuration>,
delay: Option<ReadableDuration>
)
[src]
&mut self,
timeout: Option<ReadableDuration>,
delay: Option<ReadableDuration>
)
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][+]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src][+]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src][+]
T: ?Sized,
impl<V, W> ConvertFrom<W> for V where
W: ConvertTo<V>,
[src][+]
W: ConvertTo<V>,
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][+]
U: From<T>,
impl<T> Pointable for T
[src][+]
impl<T> Pointable for T
[src][+]
impl<T> Same<T> for T
[src]
type Output = T
Should always be Self
impl<T> Sealed<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src][+]
U: Into<T>,
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src][+]
U: TryFrom<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
[src][+]
V: MultiLane<T>,