summaryrefslogtreecommitdiff
path: root/src/mongo/db/index_builds_coordinator_mongod.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/index_builds_coordinator_mongod.cpp')
-rw-r--r--src/mongo/db/index_builds_coordinator_mongod.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/mongo/db/index_builds_coordinator_mongod.cpp b/src/mongo/db/index_builds_coordinator_mongod.cpp
index 189e0397f29..517cf95d2c2 100644
--- a/src/mongo/db/index_builds_coordinator_mongod.cpp
+++ b/src/mongo/db/index_builds_coordinator_mongod.cpp
@@ -802,7 +802,17 @@ Status IndexBuildsCoordinatorMongod::setCommitQuorum(OperationContext* opCtx,
<< nss << "'.");
}
- invariantStatusOK(swOnDiskCommitQuorum);
+ auto currentCommitQuorum = invariantStatusOK(swOnDiskCommitQuorum);
+ if (currentCommitQuorum.numNodes == CommitQuorumOptions::kDisabled ||
+ newCommitQuorum.numNodes == CommitQuorumOptions::kDisabled) {
+ return Status(ErrorCodes::BadValue,
+ str::stream() << "Commit quorum value can be changed only for index builds "
+ << "with commit quorum enabled, nss: '" << nss
+ << "' first index name: '" << indexNames.front()
+ << "' currentCommitQuorum: " << currentCommitQuorum.toBSON()
+ << " providedCommitQuorum: " << newCommitQuorum.toBSON());
+ }
+
invariant(opCtx->lockState()->isRSTLLocked());
// About to update the commit quorum value on-disk. So, take the lock in exclusive mode to
// prevent readers from reading the commit quorum value and making decision on commit quorum