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][+]
impl LockManager for LockManager
[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,
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> ToOwned for T where
T: Clone,
[src][+]
T: Clone,
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>,