34 #include "mongo/db/operation_context.h" 35 #include "mongo/util/timer.h" 40 class NamespaceString;
220 EnqueueOnly enqueueOnly);
228 !(
_opCtx->lockState() &&
_opCtx->lockState()->inAWriteUnitOfWork());
229 if (willReleaseLock) {
230 _opCtx->recoveryUnit()->abandonSnapshot();
271 opCtx->lockState()->lockMMAPV1Flush();
290 opCtx->lockState()->lockMMAPV1Flush();
314 Date_t deadline = Date_t::max());
365 Date_t deadline = Date_t::max());
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
MONGO_DISALLOW_COPYING(ParallelBatchWriterMode)
Global lock.
Definition: d_concurrency.h:188
Locker * _lockState
Definition: d_concurrency.h:376
void _enqueue(LockMode lockMode, Date_t deadline)
Definition: d_concurrency.cpp:170
Interface for acquiring locks.
Definition: locker.h:47
ParallelBatchWriterMode(Locker *lockState)
Definition: d_concurrency.cpp:318
bool isExclusivelyLocked(Locker *locker)
Definition: d_concurrency.cpp:131
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
OplogIntentWriteLock(Locker *lockState)
Definition: d_concurrency.cpp:299
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
Intent shared.
Definition: lock_manager_defs.h:65
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
void relockWithMode(LockMode newMode)
Releases the DBLock and reacquires it with the new mode.
Definition: d_concurrency.cpp:251
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
~OplogIntentWriteLock()
Definition: d_concurrency.cpp:304
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
MONGO_DISALLOW_COPYING(ResourceLock)
This is used as an initializer value.
Definition: lock_manager_defs.h:142
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:189
GlobalLock _globalLock
Definition: d_concurrency.h:341
void _unlock()
Definition: d_concurrency.cpp:205
~ResourceLock()
Definition: d_concurrency.h:92
GlobalWrite(OperationContext *opCtx)
Definition: d_concurrency.h:266
bool isAtLeastReadLocked(Locker *locker)
Definition: d_concurrency.cpp:135
GlobalRead(OperationContext *opCtx, Date_t deadline, InterruptBehavior behavior)
Definition: d_concurrency.h:287
bool isLocked() const
Definition: d_concurrency.h:326
Shared.
Definition: lock_manager_defs.h:69
LockResult
Return values for the locking functions of the lock manager.
Definition: lock_manager_defs.h:108
const ResourceId _rid
Definition: d_concurrency.h:146
LockMode
LockMode compatibility matrix.
Definition: lock_manager_defs.h:61
void serializeIfNeeded()
Definition: d_concurrency.cpp:311
DBLock(OperationContext *opCtx, StringData db, LockMode mode, Date_t deadline=Date_t::max())
Definition: d_concurrency.cpp:210
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(CollectionLock)
MONGO_DISALLOW_COPYING(TempRelease)
~TempRelease()
Definition: d_concurrency.cpp:56
SharedLock(Locker *locker, ResourceMutex mutex)
Definition: d_concurrency.h:165
CollectionLock(Locker *lockState, StringData ns, LockMode mode, Date_t deadline=Date_t::max())
Definition: d_concurrency.cpp:265
~GlobalLock()
Definition: d_concurrency.h:222
void unlock()
Definition: d_concurrency.cpp:328
ResourceMutex(std::string resourceLabel)
Definition: d_concurrency.cpp:123
The lock request was granted and is now on the granted list for the specified resource.
Definition: lock_manager_defs.h:113
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
~CollectionLock()
Definition: d_concurrency.cpp:289
LockMode _mode
Definition: d_concurrency.h:338
void waitForLockUntil(Date_t deadline)
Waits for lock to be granted.
Definition: d_concurrency.cpp:184
void lock(LockMode mode)
Definition: d_concurrency.cpp:322
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
MONGO_DISALLOW_COPYING(OplogIntentWriteLock)
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
~DBLock()
Definition: d_concurrency.cpp:245
std::string getName() const
Definition: d_concurrency.h:125
Exclusive.
Definition: lock_manager_defs.h:71
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