diff options
author | Benety Goh <benety@mongodb.com> | 2020-05-06 09:59:18 -0400 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-05-07 22:23:43 +0000 |
commit | e83e058d8f344fea96c80ed9b2ba5434177d48c0 (patch) | |
tree | dba8874a3b499a1c68b2d97381f4744a517907df | |
parent | dae9c7aeefb5b619b542387b9689ea7bc0821959 (diff) | |
download | mongo-e83e058d8f344fea96c80ed9b2ba5434177d48c0.tar.gz |
SERVER-47635 IndexBuildsCoordinator::onCommitIndexBuild() accepts shared pointer to ReplIndexBuildState instead of reference
(cherry picked from commit 3b8ae818cb9f2a342974568b06f132645a546278)
-rw-r--r-- | src/mongo/db/index_builds_coordinator.cpp | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/mongo/db/index_builds_coordinator.cpp b/src/mongo/db/index_builds_coordinator.cpp index f302b4ab125..d1ad441dcd6 100644 --- a/src/mongo/db/index_builds_coordinator.cpp +++ b/src/mongo/db/index_builds_coordinator.cpp @@ -165,26 +165,26 @@ bool shouldSkipIndexBuildStateTransitionCheck(OperationContext* opCtx, */ void onCommitIndexBuild(OperationContext* opCtx, const NamespaceString& nss, - ReplIndexBuildState& replState) { - const auto& buildUUID = replState.buildUUID; + std::shared_ptr<ReplIndexBuildState> replState) { + const auto& buildUUID = replState->buildUUID; - auto skipCheck = shouldSkipIndexBuildStateTransitionCheck(opCtx, replState.protocol); + auto skipCheck = shouldSkipIndexBuildStateTransitionCheck(opCtx, replState->protocol); { - stdx::unique_lock<Latch> lk(replState.mutex); - replState.indexBuildState.setState(IndexBuildState::kCommitted, skipCheck); + stdx::unique_lock<Latch> lk(replState->mutex); + replState->indexBuildState.setState(IndexBuildState::kCommitted, skipCheck); } - if (IndexBuildProtocol::kSinglePhase == replState.protocol) { + if (IndexBuildProtocol::kSinglePhase == replState->protocol) { return; } - invariant(IndexBuildProtocol::kTwoPhase == replState.protocol, + invariant(IndexBuildProtocol::kTwoPhase == replState->protocol, str::stream() << "onCommitIndexBuild: " << buildUUID); invariant(opCtx->lockState()->isWriteLocked(), str::stream() << "onCommitIndexBuild: " << buildUUID); auto opObserver = opCtx->getServiceContext()->getOpObserver(); - const auto& collUUID = replState.collectionUUID; - const auto& indexSpecs = replState.indexSpecs; + const auto& collUUID = replState->collectionUUID; + const auto& indexSpecs = replState->indexSpecs; auto fromMigrate = false; // Since two phase index builds are allowed to survive replication state transitions, we should @@ -2257,7 +2257,7 @@ IndexBuildsCoordinator::CommitResult IndexBuildsCoordinator::_insertKeysFromSide // If two phase index builds is enabled, index build will be coordinated using // startIndexBuild and commitIndexBuild oplog entries. - auto onCommitFn = [&] { onCommitIndexBuild(opCtx, collection->ns(), *replState); }; + auto onCommitFn = [&] { onCommitIndexBuild(opCtx, collection->ns(), replState); }; auto onCreateEachFn = [&](const BSONObj& spec) { if (IndexBuildProtocol::kTwoPhase == replState->protocol) { |