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,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<V, W> ConvertFrom<W> for V where
W: ConvertTo<V>,
[src]
W: ConvertTo<V>,
pub fn convert_from(ctx: &mut EvalContext, from: W) -> Result<V, Error>
[src]
impl<T> From<T> for T
[src]
impl<T> Instrument for T
[src]
pub fn instrument(self, span: Span) -> Instrumented<Self>
[src]
pub fn in_current_span(self) -> Instrumented<Self>
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> Pointable for T
[src]
pub const ALIGN: usize
[src]
type Init = T
The type for initializers.
pub unsafe fn init(init: <T as Pointable>::Init) -> usize
[src]
pub unsafe fn deref<'a>(ptr: usize) -> &'a T
[src]
pub unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T
[src]
pub unsafe fn drop(ptr: usize)
[src]
impl<T> Pointable for T
[src]
pub const ALIGN: usize
[src]
type Init = T
The type for initializers.
pub unsafe fn init(init: <T as Pointable>::Init) -> usize
[src]
pub unsafe fn deref<'a>(ptr: usize) -> &'a T
[src]
pub unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T
[src]
pub unsafe fn drop(ptr: usize)
[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>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
[src]
V: MultiLane<T>,