Struct tikv::server::lock_manager::LockManager [−][src]
LockManager
has two components working in two threads:
- One is the
WaiterManager
which manages transactions waiting for locks. - The other one is the
Detector
which detects deadlocks between transactions.
Fields
waiter_mgr_worker: Option<FutureWorker<Task>>
detector_worker: Option<FutureWorker<Task>>
waiter_mgr_scheduler: WaiterMgrScheduler
detector_scheduler: DetectorScheduler
waiter_count: Arc<AtomicUsize>
detected: Arc<[CachePadded<Mutex<HashSet<TimeStamp>>>]>
Record transactions which have sent requests to detect deadlock.
pipelined: Arc<AtomicBool>
Implementations
impl LockManager
[src]
pub fn new(pipelined: bool) -> Self
[src]
pub fn start<S, P>(
&mut self,
store_id: u64,
pd_client: Arc<P>,
resolver: S,
security_mgr: Arc<SecurityManager>,
cfg: &Config
) -> Result<()> where
S: StoreAddrResolver + 'static,
P: PdClient + 'static,
[src]
&mut self,
store_id: u64,
pd_client: Arc<P>,
resolver: S,
security_mgr: Arc<SecurityManager>,
cfg: &Config
) -> Result<()> where
S: StoreAddrResolver + 'static,
P: PdClient + 'static,
Starts WaiterManager
and Detector
.
pub fn stop(&mut self)
[src]
Stops WaiterManager
and Detector
.
fn start_waiter_manager(&mut self, cfg: &Config) -> Result<()>
[src]
fn stop_waiter_manager(&mut self)
[src]
fn start_deadlock_detector<S, P>(
&mut self,
store_id: u64,
pd_client: Arc<P>,
resolver: S,
security_mgr: Arc<SecurityManager>,
cfg: &Config
) -> Result<()> where
S: StoreAddrResolver + 'static,
P: PdClient + 'static,
[src]
&mut self,
store_id: u64,
pd_client: Arc<P>,
resolver: S,
security_mgr: Arc<SecurityManager>,
cfg: &Config
) -> Result<()> where
S: StoreAddrResolver + 'static,
P: PdClient + 'static,
fn stop_deadlock_detector(&mut self)
[src]
pub fn register_detector_role_change_observer(
&self,
host: &mut CoprocessorHost<impl KvEngine>
)
[src]
&self,
host: &mut CoprocessorHost<impl KvEngine>
)
Creates a RoleChangeNotifier
of the deadlock detector worker and registers it to
the CoprocessorHost
to observe the role change events of the leader region.
pub fn deadlock_service(&self) -> DeadlockService
[src]
Creates a DeadlockService
to handle deadlock detect requests from other nodes.
pub fn config_manager(&self) -> LockManagerConfigManager
[src]
pub fn get_pipelined(&self) -> Arc<AtomicBool>
[src]
fn add_to_detected(&self, txn_ts: TimeStamp)
[src]
fn remove_from_detected(&self, txn_ts: TimeStamp) -> bool
[src]
Trait Implementations
impl Clone for LockManager
[src]
fn clone(&self) -> Self
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl LockManager for LockManager
[src]
fn wait_for(
&self,
start_ts: TimeStamp,
cb: StorageCallback,
pr: ProcessResult,
lock: Lock,
is_first_lock: bool,
timeout: Option<WaitTimeout>,
diag_ctx: DiagnosticContext
)
[src]
&self,
start_ts: TimeStamp,
cb: StorageCallback,
pr: ProcessResult,
lock: Lock,
is_first_lock: bool,
timeout: Option<WaitTimeout>,
diag_ctx: DiagnosticContext
)
fn wake_up(
&self,
lock_ts: TimeStamp,
hashes: Vec<u64>,
commit_ts: TimeStamp,
is_pessimistic_txn: bool
)
[src]
&self,
lock_ts: TimeStamp,
hashes: Vec<u64>,
commit_ts: TimeStamp,
is_pessimistic_txn: bool
)
fn has_waiter(&self) -> bool
[src]
fn dump_wait_for_entries(&self, cb: Callback)
[src]
Auto Trait Implementations
impl !RefUnwindSafe for LockManager
impl Send for LockManager
impl Sync for LockManager
impl Unpin for LockManager
impl !UnwindSafe for LockManager
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> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
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>,