summaryrefslogtreecommitdiff
path: root/src/mongo/db/concurrency/lock_state.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/concurrency/lock_state.cpp')
-rw-r--r--src/mongo/db/concurrency/lock_state.cpp18
1 files changed, 4 insertions, 14 deletions
diff --git a/src/mongo/db/concurrency/lock_state.cpp b/src/mongo/db/concurrency/lock_state.cpp
index 14d51efd41a..d1f6059ea6c 100644
--- a/src/mongo/db/concurrency/lock_state.cpp
+++ b/src/mongo/db/concurrency/lock_state.cpp
@@ -286,22 +286,10 @@ void CondVarLockGrantNotification::notify(ResourceId resId, LockResult result) {
_cond.notify_all();
}
-namespace {
-TicketHolder* ticketHolders[LockModesCount] = {};
-} // namespace
-
-
//
// Locker
//
-/* static */
-void Locker::setGlobalThrottling(class TicketHolder* reading, class TicketHolder* writing) {
- ticketHolders[MODE_S] = reading;
- ticketHolders[MODE_IS] = reading;
- ticketHolders[MODE_IX] = writing;
-}
-
LockerImpl::LockerImpl()
: _id(idCounter.addAndFetch(1)), _wuowNestingLevel(0), _threadId(stdx::this_thread::get_id()) {}
@@ -371,7 +359,8 @@ void LockerImpl::reacquireTicket(OperationContext* opCtx) {
bool LockerImpl::_acquireTicket(OperationContext* opCtx, LockMode mode, Date_t deadline) {
const bool reader = isSharedLockMode(mode);
- auto holder = shouldAcquireTicket() ? ticketHolders[mode] : nullptr;
+ auto lockManager = getGlobalLockManager();
+ auto holder = shouldAcquireTicket() ? lockManager->getTicketHolder(mode) : nullptr;
if (holder) {
_clientState.store(reader ? kQueuedReader : kQueuedWriter);
@@ -1080,7 +1069,8 @@ void LockerImpl::releaseTicket() {
}
void LockerImpl::_releaseTicket() {
- auto holder = shouldAcquireTicket() ? ticketHolders[_modeForTicket] : nullptr;
+ auto ticketManager = getGlobalLockManager();
+ auto holder = shouldAcquireTicket() ? ticketManager->getTicketHolder(_modeForTicket) : nullptr;
if (holder) {
holder->release();
}