summaryrefslogtreecommitdiff
path: root/src/mongo/db/index_builds_coordinator_mongod.cpp
diff options
context:
space:
mode:
authorGregory Wlodarek <gregory.wlodarek@mongodb.com>2020-04-09 20:27:15 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-04-20 22:53:33 +0000
commitb957b68205fbf672867cf68e30c0744ac5abfb9f (patch)
tree3cfc9b7cb90f2082b905f87701ab92d87d5297cc /src/mongo/db/index_builds_coordinator_mongod.cpp
parent41bec612516c3258984deaa022453d6721bcd542 (diff)
downloadmongo-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.cpp8
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");