diff options
author | Jordi Olivares Provencio <jordi.olivares-provencio@mongodb.com> | 2022-04-20 13:27:01 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-04-20 13:53:12 +0000 |
commit | e399b6676c5fc11df61e9b8ca4c27a2f7fc1e584 (patch) | |
tree | 0494726144eda7a7bbbec93649467a8d84f724d0 /src/mongo/db/storage/storage_engine_init.cpp | |
parent | f08cda52ec0e3cbe6ffea30848179ef8641d5f34 (diff) | |
download | mongo-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.cpp | 26 |
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(); |