35 #include "mongo/base/static_assert.h" 36 #include "mongo/base/string_data.h" 37 #include "mongo/config.h" 38 #include "mongo/platform/hash_namespace.h" 45 struct PartitionedLockHead;
202 operator uint64_t()
const {
231 #ifdef MONGO_CONFIG_DEBUG_BUILD 238 #ifndef MONGO_CONFIG_DEBUG_BUILD 444 unsigned unlockPending = 0;
455 MONGO_HASH_NAMESPACE_START
462 MONGO_HASH_NAMESPACE_END
ResourceType
Hierarchy of resource types.
Definition: lock_manager_defs.h:150
const ResourceId resourceIdLocalDB
Definition: lock_state.cpp:1107
LockGrantNotification * notify
Definition: lock_manager_defs.h:338
SingletonHashIds
Assign hash ids for special resources to avoid accidental reuse of ids.
Definition: lock_manager_defs.h:186
Interface for acquiring locks.
Definition: locker.h:47
virtual ~LockGrantNotification()
Definition: lock_manager_defs.h:278
Definition: lock_manager_defs.h:178
Collection *const const NamespaceString & ns
Definition: collection_info_cache_impl.cpp:53
Interface on which granted lock requests will be notified.
Definition: lock_manager_defs.h:276
LockMode mode
Definition: lock_manager_defs.h:424
Definition: lock_manager_defs.h:309
MONGO_STATIC_ASSERT(ResourceTypesCount<=(1<< resourceTypeBits))
Copyright (C) 2014 MongoDB Inc.
Definition: bson_collection_catalog_entry.cpp:38
Definition: lock_manager_defs.h:62
Definition: lock_manager_defs.h:154
const ResourceId resourceIdAdminDB
Definition: lock_state.cpp:1109
Definition: lock_manager_defs.h:61
bool operator<(const ResourceId &rhs) const
Definition: lock_manager_defs.h:207
uint64_t LockerId
Definition: lock_manager_defs.h:246
Definition: lock_manager_defs.h:158
Definition: lock_manager_defs.h:159
static uint64_t fullHash(ResourceType type, uint64_t hashId)
Definition: lock_manager.cpp:1121
There is one of these objects for each resource that has a lock request.
Definition: lock_manager.cpp:140
const ResourceId resourceIdOplog
Definition: lock_state.cpp:1108
ResourceType getType() const
Definition: lock_manager_defs.h:211
std::string toString() const
Definition: lock_manager.cpp:1142
This is used as an initializer value.
Definition: lock_manager_defs.h:133
bool enqueueAtFront
Definition: lock_manager_defs.h:347
Uniquely identifies a lockable resource.
Definition: lock_manager_defs.h:176
unsigned recursiveCount
Definition: lock_manager_defs.h:375
Definition: lock_manager_defs.h:187
Definition: lock_manager_defs.h:165
bool isSharedLockMode(LockMode mode)
Returns whether the passed in mode is S or IS.
Definition: lock_manager_defs.h:91
Status status
Definition: database_impl.cpp:975
const ResourceId resourceIdParallelBatchWriterMode
Definition: lock_state.cpp:1110
Definition: lock_manager_defs.h:63
Definition: lock_manager_defs.h:312
uint64_t _fullHash
The top 'resourceTypeBits' bits of '_fullHash' represent the resource type, while the remaining bits ...
Definition: lock_manager_defs.h:227
Definition: lock_manager_defs.h:190
size_t operator()(const mongo::ResourceId &resource) const
Definition: lock_manager_defs.h:458
LockResult
Return values for the locking functions of the lock manager.
Definition: lock_manager_defs.h:99
LockMode
Lock modes.
Definition: lock_manager_defs.h:59
const char * resourceTypeName(ResourceType resourceType)
Returns a human-readable name for the specified resource type.
Definition: lock_manager.cpp:1199
LockHead * lock
Definition: lock_manager_defs.h:385
Locker * locker
Definition: lock_manager_defs.h:329
const char * legacyModeName(LockMode mode)
Legacy lock mode names in parity for 2.6 reports.
Definition: lock_manager.cpp:1190
Definition: lock_manager_defs.h:310
bool isModeCovered(LockMode mode, LockMode coveringMode)
Mode A is covered by mode B if the set of conflicts for mode A is a subset of the set of conflicts fo...
Definition: lock_manager.cpp:1194
std::array< DefaultLockerImpl, kMaxPerfThreads > locker
Definition: d_concurrency_bm.cpp:66
LockRequest * prev
Definition: lock_manager_defs.h:405
Definition: lock_manager_defs.h:311
Definition: lock_manager_defs.h:157
Definition: lock_manager_defs.h:189
PartitionedLockHead * partitionedLock
Definition: lock_manager_defs.h:394
const char * lockRequestStatusName(LockRequest::Status status)
Returns a human readable status name for the specified LockRequest status.
Definition: lock_manager.cpp:1203
The PartitionedLockHead allows optimizing the case where requests overwhelmingly use the intent lock ...
Definition: lock_manager.cpp:352
The lock request waited, but timed out before it could be granted.
Definition: lock_manager_defs.h:119
The lock request was not granted because it would result in a deadlock.
Definition: lock_manager_defs.h:128
LockRequest * next
Definition: lock_manager_defs.h:406
LockMode convertMode
Definition: lock_manager_defs.h:432
Definition: lock_manager_defs.h:60
Definition: lock_manager_defs.h:68
The lock request was granted and is now on the granted list for the specified resource.
Definition: lock_manager_defs.h:104
Status
Definition: lock_manager_defs.h:308
Definition: lock_manager_defs.h:188
bool partitioned
Definition: lock_manager_defs.h:366
There is one of those entries per each request for a lock.
Definition: lock_manager_defs.h:307
The lock request was not granted because of conflict.
Definition: lock_manager_defs.h:112
Definition: lock_manager_defs.h:162
Definition: lock_manager_defs.h:152
uint64_t getHashId() const
Definition: lock_manager_defs.h:215
Definition: lock_manager_defs.h:153
const char * modeName(LockMode mode)
Returns a human-readable name for the specified lock mode.
Definition: lock_manager.cpp:1186
Definition: lock_manager_defs.h:64
bool compatibleFirst
Definition: lock_manager_defs.h:357
Status status
Definition: lock_manager_defs.h:413
ResourceId()
Definition: lock_manager_defs.h:193
bool isValid() const
Definition: lock_manager_defs.h:198