summaryrefslogtreecommitdiff
path: root/src/mongo/db/storage/storage_engine_init.cpp
diff options
context:
space:
mode:
authorJordi Olivares Provencio <jordi.olivares-provencio@mongodb.com>2022-04-20 13:27:01 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-04-20 13:53:12 +0000
commite399b6676c5fc11df61e9b8ca4c27a2f7fc1e584 (patch)
tree0494726144eda7a7bbbec93649467a8d84f724d0 /src/mongo/db/storage/storage_engine_init.cpp
parentf08cda52ec0e3cbe6ffea30848179ef8641d5f34 (diff)
downloadmongo-e399b6676c5fc11df61e9b8ca4c27a2f7fc1e584.tar.gz
SERVER-64467 Refactor TicketHolders to not use global context
Diffstat (limited to 'src/mongo/db/storage/storage_engine_init.cpp')
-rw-r--r--src/mongo/db/storage/storage_engine_init.cpp26
1 files changed, 9 insertions, 17 deletions
diff --git a/src/mongo/db/storage/storage_engine_init.cpp b/src/mongo/db/storage/storage_engine_init.cpp
index 97f935e32a9..7c345ddcfe6 100644
--- a/src/mongo/db/storage/storage_engine_init.cpp
+++ b/src/mongo/db/storage/storage_engine_init.cpp
@@ -168,29 +168,28 @@ StorageEngine::LastShutdownState initializeStorageEngine(OperationContext* opCtx
auto writeTransactions = gConcurrentWriteTransactions.load();
writeTransactions = writeTransactions == 0 ? DEFAULT_TICKETS_VALUE : writeTransactions;
- // TODO SERVER-64467: Remove the globalServiceContext for TicketHolders
- auto serviceContext = getGlobalServiceContext();
- auto& ticketHolders = ticketHoldersDecoration(serviceContext);
+ auto svcCtx = opCtx->getServiceContext();
+ auto& ticketHolders = TicketHolders::get(svcCtx);
if (feature_flags::gFeatureFlagExecutionControl.isEnabledAndIgnoreFCV()) {
LOGV2_DEBUG(5190400, 1, "Enabling new ticketing policies");
switch (gTicketQueueingPolicy) {
case QueueingPolicyEnum::Semaphore:
LOGV2_DEBUG(6382201, 1, "Using Semaphore-based ticketing scheduler");
ticketHolders.setGlobalThrottling(
- std::make_unique<SemaphoreTicketHolder>(readTransactions, serviceContext),
- std::make_unique<SemaphoreTicketHolder>(writeTransactions, serviceContext));
+ std::make_unique<SemaphoreTicketHolder>(readTransactions, svcCtx),
+ std::make_unique<SemaphoreTicketHolder>(writeTransactions, svcCtx));
break;
case QueueingPolicyEnum::FifoQueue:
LOGV2_DEBUG(6382200, 1, "Using FIFO queue-based ticketing scheduler");
ticketHolders.setGlobalThrottling(
- std::make_unique<FifoTicketHolder>(readTransactions, serviceContext),
- std::make_unique<FifoTicketHolder>(writeTransactions, serviceContext));
+ std::make_unique<FifoTicketHolder>(readTransactions, svcCtx),
+ std::make_unique<FifoTicketHolder>(writeTransactions, svcCtx));
break;
}
} else {
ticketHolders.setGlobalThrottling(
- std::make_unique<SemaphoreTicketHolder>(readTransactions, serviceContext),
- std::make_unique<SemaphoreTicketHolder>(writeTransactions, serviceContext));
+ std::make_unique<SemaphoreTicketHolder>(readTransactions, svcCtx),
+ std::make_unique<SemaphoreTicketHolder>(writeTransactions, svcCtx));
}
}
@@ -255,13 +254,6 @@ void shutdownGlobalStorageEngineCleanly(ServiceContext* service,
lockFile->clearPidAndUnlock();
lockFile = boost::none;
}
- // TODO SERVER-64467: Remove the globalServiceContext for TicketHolders
- // Cleanup the ticket holders.
- if (hasGlobalServiceContext() && !forRestart) {
- auto serviceContext = getGlobalServiceContext();
- auto& ticketHolders = ticketHoldersDecoration(serviceContext);
- ticketHolders.setGlobalThrottling(nullptr, nullptr);
- }
}
} /* namespace */
@@ -412,7 +404,7 @@ public:
void onDestroyClient(Client* client) override{};
void onCreateOperationContext(OperationContext* opCtx) {
// Use a fully fledged lock manager even when the storage engine is not set.
- opCtx->setLockState(std::make_unique<LockerImpl>());
+ opCtx->setLockState(std::make_unique<LockerImpl>(opCtx->getServiceContext()));
auto service = opCtx->getServiceContext();