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;
215 operator uint64_t()
const {
244 #ifdef MONGO_CONFIG_DEBUG_BUILD 251 #ifndef MONGO_CONFIG_DEBUG_BUILD 468 MONGO_HASH_NAMESPACE_START
475 MONGO_HASH_NAMESPACE_END
ResourceType
Hierarchy of resource types.
Definition: lock_manager_defs.h:159
const ResourceId resourceIdLocalDB
Definition: lock_state.cpp:1115
LockGrantNotification * notify
Definition: lock_manager_defs.h:351
SingletonHashIds
Assign hash ids for special resources to avoid accidental reuse of ids.
Definition: lock_manager_defs.h:199
Status status
Definition: database_impl.cpp:1020
Interface for acquiring locks.
Definition: locker.h:47
virtual ~LockGrantNotification()
Definition: lock_manager_defs.h:291
Definition: lock_manager_defs.h:191
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:289
LockMode mode
Definition: lock_manager_defs.h:437
Definition: lock_manager_defs.h:322
MONGO_STATIC_ASSERT(ResourceTypesCount<=(1<< resourceTypeBits))
Copyright (C) 2014 MongoDB Inc.
Definition: bson_collection_catalog_entry.cpp:38
Intent exclusive.
Definition: lock_manager_defs.h:67
Necessary only for the MMAPv1 engine.
Definition: lock_manager_defs.h:167
const ResourceId resourceIdAdminDB
Definition: lock_state.cpp:1117
Intent shared.
Definition: lock_manager_defs.h:65
bool operator<(const ResourceId &rhs) const
Definition: lock_manager_defs.h:220
uint64_t LockerId
Definition: lock_manager_defs.h:259
Definition: lock_manager_defs.h:171
Definition: lock_manager_defs.h:172
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:1116
ResourceType getType() const
Definition: lock_manager_defs.h:224
std::string toString() const
Definition: lock_manager.cpp:1142
void initNew(Locker *locker, LockGrantNotification *notify)
Used for initialization of a LockRequest, which might have been retrieved from cache.
Definition: lock_manager.cpp:1163
MONGO_STATIC_ASSERT(sizeof(void *)==sizeof(size_t))
This is used as an initializer value.
Definition: lock_manager_defs.h:142
bool enqueueAtFront
Definition: lock_manager_defs.h:360
Uniquely identifies a lockable resource.
Definition: lock_manager_defs.h:189
unsigned recursiveCount
Definition: lock_manager_defs.h:388
Definition: lock_manager_defs.h:200
virtual void notify(ResourceId resId, LockResult result)=0
This method is invoked at most once for each lock request and indicates the outcome of the lock acqui...
Counts the rest.
Definition: lock_manager_defs.h:178
bool isSharedLockMode(LockMode mode)
Returns whether the passed in mode is S or IS.
Definition: lock_manager_defs.h:100
const ResourceId resourceIdParallelBatchWriterMode
Definition: lock_state.cpp:1118
Shared.
Definition: lock_manager_defs.h:69
Definition: lock_manager_defs.h:325
uint64_t _fullHash
The top 'resourceTypeBits' bits of '_fullHash' represent the resource type, while the remaining bits ...
Definition: lock_manager_defs.h:240
Definition: lock_manager_defs.h:203
size_t operator()(const mongo::ResourceId &resource) const
Definition: lock_manager_defs.h:471
LockResult
Return values for the locking functions of the lock manager.
Definition: lock_manager_defs.h:108
LockMode
LockMode compatibility matrix.
Definition: lock_manager_defs.h:61
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:398
Locker * locker
Definition: lock_manager_defs.h:342
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:328
Definition: lock_manager_defs.h:323
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
LockRequest * prev
Definition: lock_manager_defs.h:418
Definition: lock_manager_defs.h:324
Generic resources, used for multi-granularity locking, together with RESOURCE_GLOBAL.
Definition: lock_manager_defs.h:170
Definition: lock_manager_defs.h:202
PartitionedLockHead * partitionedLock
Definition: lock_manager_defs.h:407
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:128
The lock request was not granted because it would result in a deadlock.
Definition: lock_manager_defs.h:137
LockRequest * next
Definition: lock_manager_defs.h:419
LockMode convertMode
Definition: lock_manager_defs.h:445
None.
Definition: lock_manager_defs.h:63
Counts the lock modes.
Definition: lock_manager_defs.h:77
The lock request was granted and is now on the granted list for the specified resource.
Definition: lock_manager_defs.h:113
Status
Definition: lock_manager_defs.h:321
Definition: lock_manager_defs.h:201
bool partitioned
Definition: lock_manager_defs.h:379
There is one of those entries per each request for a lock.
Definition: lock_manager_defs.h:320
unsigned unlockPending
Definition: lock_manager_defs.h:457
The lock request was not granted because of conflict.
Definition: lock_manager_defs.h:121
Resource type used for locking general resources not related to the storage hierarchy.
Definition: lock_manager_defs.h:175
Types used for special resources, use with a hash id from ResourceId::SingletonHashIds.
Definition: lock_manager_defs.h:161
uint64_t getHashId() const
Definition: lock_manager_defs.h:228
Used for mode changes or global exclusive operations.
Definition: lock_manager_defs.h:164
const char * modeName(LockMode mode)
Returns a human-readable name for the specified lock mode.
Definition: lock_manager.cpp:1186
Exclusive.
Definition: lock_manager_defs.h:71
bool compatibleFirst
Definition: lock_manager_defs.h:370
Status status
Definition: lock_manager_defs.h:426
ResourceId()
Definition: lock_manager_defs.h:206
bool isValid() const
Definition: lock_manager_defs.h:211