diff options
author | Gregory Wlodarek <gregory.wlodarek@mongodb.com> | 2020-04-09 20:27:15 -0400 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-04-20 22:53:33 +0000 |
commit | b957b68205fbf672867cf68e30c0744ac5abfb9f (patch) | |
tree | 3cfc9b7cb90f2082b905f87701ab92d87d5297cc /src/mongo/db/index_builds_coordinator_mongod.cpp | |
parent | 41bec612516c3258984deaa022453d6721bcd542 (diff) | |
download | mongo-b957b68205fbf672867cf68e30c0744ac5abfb9f.tar.gz |
SERVER-46659 Initial sync will startup two phase index builds during the collection cloning phase to prevent a scenario where the commit quorum cannot be satisfied due to the primary node needing the initial syncing nodes vote
Diffstat (limited to 'src/mongo/db/index_builds_coordinator_mongod.cpp')
-rw-r--r-- | src/mongo/db/index_builds_coordinator_mongod.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/mongo/db/index_builds_coordinator_mongod.cpp b/src/mongo/db/index_builds_coordinator_mongod.cpp index 004b1ba04a6..b1206039ccf 100644 --- a/src/mongo/db/index_builds_coordinator_mongod.cpp +++ b/src/mongo/db/index_builds_coordinator_mongod.cpp @@ -174,7 +174,7 @@ IndexBuildsCoordinatorMongod::startIndexBuild(OperationContext* opCtx, _indexBuildFinished.notify_one(); }); - if (indexBuildOptions.twoPhaseRecovery) { + if (indexBuildOptions.applicationMode == ApplicationMode::kStartupRepair) { // Two phase index build recovery goes though a different set-up procedure because the // original index will be dropped first. invariant(protocol == IndexBuildProtocol::kTwoPhase); @@ -281,9 +281,8 @@ IndexBuildsCoordinatorMongod::startIndexBuild(OperationContext* opCtx, ShouldNotConflictWithSecondaryBatchApplicationBlock shouldNotConflictBlock( opCtx->lockState()); - if (!indexBuildOptions.twoPhaseRecovery) { - status = _setUpIndexBuild( - opCtx.get(), buildUUID, startTimestamp, indexBuildOptions.commitQuorum); + if (indexBuildOptions.applicationMode != ApplicationMode::kStartupRepair) { + status = _setUpIndexBuild(opCtx.get(), buildUUID, startTimestamp, indexBuildOptions); if (!status.isOK()) { startPromise.setError(status); return; @@ -677,6 +676,7 @@ void IndexBuildsCoordinatorMongod::_waitForNextIndexBuildActionAndCommit( break; case IndexBuildAction::kOplogAbort: case IndexBuildAction::kRollbackAbort: + case IndexBuildAction::kInitialSyncAbort: case IndexBuildAction::kPrimaryAbort: // The calling thread should have interrupted us before signaling an abort action. LOGV2_FATAL(4698901, "Index build abort should have interrupted this operation"); |