diff options
Diffstat (limited to 'src/mongo/db/concurrency/lock_manager.cpp')
-rw-r--r-- | src/mongo/db/concurrency/lock_manager.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/mongo/db/concurrency/lock_manager.cpp b/src/mongo/db/concurrency/lock_manager.cpp index 0737febeb25..5650d282ee6 100644 --- a/src/mongo/db/concurrency/lock_manager.cpp +++ b/src/mongo/db/concurrency/lock_manager.cpp @@ -47,6 +47,7 @@ #include "mongo/db/service_context.h" #include "mongo/logv2/log.h" #include "mongo/util/assert_util.h" +#include "mongo/util/concurrency/ticketholder.h" #include "mongo/util/decorable.h" #include "mongo/util/str.h" #include "mongo/util/timer.h" @@ -878,6 +879,24 @@ void LockManager::getLockInfoBSON(const std::map<LockerId, BSONObj>& lockToClien _buildLocksArray(lockToClientMap, false, this, &lockInfoArr); } +void LockManager::setTicketHolders(std::unique_ptr<TicketHolder> reading, + std::unique_ptr<TicketHolder> writing) { + _readingTicketholder = std::move(reading); + _writingTicketholder = std::move(writing); +} + +TicketHolder* LockManager::getTicketHolder(LockMode mode) { + switch (mode) { + case MODE_IS: + case MODE_S: + return _readingTicketholder.get(); + case MODE_IX: + return _writingTicketholder.get(); + default: + return nullptr; + } +} + void LockManager::_buildLocksArray(const std::map<LockerId, BSONObj>& lockToClientMap, bool forLogging, LockManager* mutableThis, |