diff options
author | Benety Goh <benety@mongodb.com> | 2021-06-09 13:16:45 -0400 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-06-09 17:38:58 +0000 |
commit | f852a4786efb9cf2a2a78ebbf0cabf637d45182c (patch) | |
tree | be1b9d6a63f6c308dbb242de0fba36568574b8f2 | |
parent | b695ced699ecd7529c3cfbc87b081bc60caea68b (diff) | |
download | mongo-f852a4786efb9cf2a2a78ebbf0cabf637d45182c.tar.gz |
SERVER-52516 redirect global lock manager accessor to service context decorator
'globalLockManager' will be retained for backwards compatibility with debugger scripts.
-rw-r--r-- | src/mongo/db/concurrency/lock_state.cpp | 17 | ||||
-rw-r--r-- | src/mongo/db/concurrency/lock_state.h | 5 |
2 files changed, 18 insertions, 4 deletions
diff --git a/src/mongo/db/concurrency/lock_state.cpp b/src/mongo/db/concurrency/lock_state.cpp index 4520f81e207..793a2a2dd7d 100644 --- a/src/mongo/db/concurrency/lock_state.cpp +++ b/src/mongo/db/concurrency/lock_state.cpp @@ -118,8 +118,16 @@ private: }; -// Global lock manager instance. -LockManager globalLockManager; +// Provide backwards compatibility for debugger scripts that expect a 'globalLockManager' variable +// in the anonymous namespace. See buildscripts/gdb/mongo.py and buildscripts/lldb/lldb_commands.py. +[[maybe_unused]] struct { + void dump() { + auto serviceContext = getGlobalServiceContext(); + invariant(serviceContext); + auto lockManager = LockManager::get(serviceContext); + lockManager->dump(); + } +} globalLockManager; // How often (in millis) to check for deadlock if a lock has not been granted for some time const Milliseconds MaxWaitTime = Milliseconds(500); @@ -1097,13 +1105,14 @@ public: } unusedLockCleaner; } // namespace - // // Standalone functions // LockManager* getGlobalLockManager() { - return &globalLockManager; + auto serviceContext = getGlobalServiceContext(); + invariant(serviceContext); + return LockManager::get(serviceContext); } void reportGlobalLockingStats(SingleThreadedLockStats* outStats) { diff --git a/src/mongo/db/concurrency/lock_state.h b/src/mongo/db/concurrency/lock_state.h index 202530cf8ae..d29f7817079 100644 --- a/src/mongo/db/concurrency/lock_state.h +++ b/src/mongo/db/concurrency/lock_state.h @@ -403,6 +403,11 @@ public: /** * Retrieves the global lock manager instance. + * Legacy global lock manager accessor for internal lock implementation * and debugger scripts + * such as gdb/mongo_lock.py. + * The lock manager is now a decoration on the service context and this accessor is retained for + * startup, lock internals, and debugger scripts. + * Using LockManager::get(ServiceContext*) where possible is preferable. */ LockManager* getGlobalLockManager(); |