34 #include "mongo/db/operation_context.h" 35 #include "mongo/util/timer.h" 40 class NamespaceString;
86 : _rid(otherLock._rid), _locker(otherLock._locker), _result(otherLock._result) {
126 return getName(_rid);
129 static std::string getName(
ResourceId resourceId);
133 bool isAtLeastReadLocked(
Locker* locker);
227 const bool willReleaseLock = _isOutermostLock &&
228 !(
_opCtx->lockState() &&
_opCtx->lockState()->inAWriteUnitOfWork());
229 if (willReleaseLock) {
230 _opCtx->recoveryUnit()->abandonSnapshot();
240 void waitForLockUntil(Date_t deadline);
247 void _enqueue(
LockMode lockMode, Date_t deadline);
271 opCtx->lockState()->lockMMAPV1Flush();
290 opCtx->lockState()->lockMMAPV1Flush();
314 Date_t deadline = Date_t::max());
324 void relockWithMode(
LockMode newMode);
365 Date_t deadline = Date_t::max());
391 void serializeIfNeeded();
Locker *const _lockState
Definition: d_concurrency.h:394
Locker *const _lockState
Definition: d_concurrency.h:56
ResourceLock _pbwm
Definition: d_concurrency.h:411
ResourceLock(Locker *locker, ResourceId rid, LockMode mode)
Definition: d_concurrency.h:80
Global lock.
Definition: d_concurrency.h:188
Locker * _lockState
Definition: d_concurrency.h:376
Interface for acquiring locks.
Definition: locker.h:47
OperationContext *const _opCtx
Definition: d_concurrency.h:332
LockResult _result
Definition: d_concurrency.h:375
Collection *const const NamespaceString & ns
Definition: collection_info_cache_impl.cpp:53
const ResourceId _id
Definition: d_concurrency.h:331
Database lock with support for collection- and document-level locking.
Definition: d_concurrency.h:309
Copyright (C) 2014 MongoDB Inc.
Definition: bson_collection_catalog_entry.cpp:38
LockResult _result
Definition: d_concurrency.h:251
const ResourceId _id
Definition: d_concurrency.h:374
Definition: lock_manager_defs.h:61
Like the CollectionLock, but optimized for the local oplog.
Definition: d_concurrency.h:385
GlobalLock(OperationContext *opCtx, LockMode lockMode)
A GlobalLock without a deadline defaults to Date_t::max() and an InterruptBehavior of kThrow...
Definition: d_concurrency.h:196
Definition: d_concurrency.h:42
General purpose RAII wrapper for a resource managed by the lock manager.
Definition: d_concurrency.h:73
bool isLocked() const
Definition: d_concurrency.h:101
RAII-style class to opt out of replication's use of ParallelBatchWriterMode.
Definition: locker.h:501
ExclusiveLock(Locker *locker, ResourceMutex mutex)
Definition: d_concurrency.h:154
ResourceId rid() const
Each instantiation of this class allocates a new ResourceId.
Definition: d_concurrency.h:142
ShouldNotConflictWithSecondaryBatchApplicationBlock _shouldNotConflictBlock
Definition: d_concurrency.h:412
ResourceLock(Locker *locker, ResourceId rid)
Definition: d_concurrency.h:77
This is used as an initializer value.
Definition: lock_manager_defs.h:133
NOTE: DO NOT add any new usages of TempRelease.
Definition: d_concurrency.h:47
GlobalWrite(OperationContext *opCtx, Date_t deadline, InterruptBehavior behavior)
Definition: d_concurrency.h:268
Global shared lock.
Definition: d_concurrency.h:283
Locker::LockSnapshot _lockSnapshot
Definition: d_concurrency.h:60
InterruptBehavior _interruptBehavior
Definition: d_concurrency.h:253
Uniquely identifies a lockable resource.
Definition: lock_manager_defs.h:176
GlobalLock _globalLock
Definition: d_concurrency.h:341
~ResourceLock()
Definition: d_concurrency.h:92
GlobalWrite(OperationContext *opCtx)
Definition: d_concurrency.h:266
GlobalRead(OperationContext *opCtx, Date_t deadline, InterruptBehavior behavior)
Definition: d_concurrency.h:287
bool isLocked() const
Definition: d_concurrency.h:326
Definition: lock_manager_defs.h:63
LockResult
Return values for the locking functions of the lock manager.
Definition: lock_manager_defs.h:99
const ResourceId _rid
Definition: d_concurrency.h:146
LockMode
Lock modes.
Definition: lock_manager_defs.h:59
LockResult _result
Definition: d_concurrency.h:333
TempRelease(Locker *lockState)
Definition: d_concurrency.cpp:51
std::array< DefaultLockerImpl, kMaxPerfThreads > locker
Definition: d_concurrency_bm.cpp:66
Global exclusive lock.
Definition: d_concurrency.h:264
Obtains a ResourceMutex for shared/non-exclusive use.
Definition: d_concurrency.h:163
Collection lock with support for document-level locking.
Definition: d_concurrency.h:358
MONGO_DISALLOW_COPYING(TempRelease)
~TempRelease()
Definition: d_concurrency.cpp:56
SharedLock(Locker *locker, ResourceMutex mutex)
Definition: d_concurrency.h:165
~GlobalLock()
Definition: d_concurrency.h:222
The lock request was granted and is now on the granted list for the specified resource.
Definition: lock_manager_defs.h:104
const bool _locksReleased
Definition: d_concurrency.h:63
OperationContext Database * db
Definition: database_impl.cpp:949
OperationContext *const _opCtx
Definition: d_concurrency.h:250
bool _serialized
Definition: d_concurrency.h:395
For use as general mutex or readers/writers lock, outside the general multi-granularity model...
Definition: d_concurrency.h:121
Locker *const _locker
Definition: d_concurrency.h:107
LockMode _mode
Definition: d_concurrency.h:338
LockSnapshot captures the state of all resources that are locked, what modes they're locked in...
Definition: locker.h:342
bool isLocked() const
Definition: d_concurrency.h:369
GlobalRead(OperationContext *opCtx)
Definition: d_concurrency.h:285
ResourceLock _pbwm
Definition: d_concurrency.h:252
bool isLocked() const
Definition: d_concurrency.h:242
OperationContext * _opCtx
Definition: ephemeral_for_test_btree_impl.cpp:447
Definition: d_concurrency.h:190
Turn on "parallel batch writer mode" by locking the global ParallelBatchWriterMode resource in exclus...
Definition: d_concurrency.h:404
Collection *const OperationContext *const opCtx
Definition: collection_impl.cpp:80
const ResourceId _rid
Definition: d_concurrency.h:106
std::string getName() const
Definition: d_concurrency.h:125
Definition: lock_manager_defs.h:64
LockResult _result
Definition: d_concurrency.h:109
const bool _isOutermostLock
Definition: d_concurrency.h:254
InterruptBehavior
The interrupt behavior is used to tell a lock how to handle an interrupted lock acquisition.
Definition: d_concurrency.h:172
Obtains a ResourceMutex for exclusive use.
Definition: d_concurrency.h:152
ResourceLock(ResourceLock &&otherLock)
Definition: d_concurrency.h:85