summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenety Goh <benety@mongodb.com>2020-05-06 09:59:18 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-05-07 22:23:43 +0000
commite83e058d8f344fea96c80ed9b2ba5434177d48c0 (patch)
treedba8874a3b499a1c68b2d97381f4744a517907df
parentdae9c7aeefb5b619b542387b9689ea7bc0821959 (diff)
downloadmongo-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.cpp20
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) {