summaryrefslogtreecommitdiff
path: root/src/mongo/db/index_builds_coordinator_mongod.cpp
diff options
context:
space:
mode:
authorVishnu Kaushik <vishnu.kaushik@mongodb.com>2020-09-16 16:06:48 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-09-16 17:13:00 +0000
commitcc248c4286d45eee06e2d66cdd52cd7cbae5b593 (patch)
tree98b3f9e21e9444c652db7b2c79c79edd813ce045 /src/mongo/db/index_builds_coordinator_mongod.cpp
parent31b68dc5a867db96e33a33fc8f4d3f2ceb22a9f9 (diff)
downloadmongo-cc248c4286d45eee06e2d66cdd52cd7cbae5b593.tar.gz
SERVER-48293 change update to upsert to mitigate race condition leading to orphaned system.indexBuilds
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, 6 insertions, 6 deletions
diff --git a/src/mongo/db/index_builds_coordinator_mongod.cpp b/src/mongo/db/index_builds_coordinator_mongod.cpp
index f503f4f572d..89627a1f42e 100644
--- a/src/mongo/db/index_builds_coordinator_mongod.cpp
+++ b/src/mongo/db/index_builds_coordinator_mongod.cpp
@@ -391,8 +391,7 @@ Status IndexBuildsCoordinatorMongod::voteCommitIndexBuild(OperationContext* opCt
// commit quorum on (i.e., commit value set as non-zero or a valid tag) and vice-versa. So,
// after this point, it's not possible for the index build's commit quorum value to get updated
// to CommitQuorumOptions::kDisabled.
-
- Status upsertStatus(ErrorCodes::InternalError, "Uninitialized value");
+ Status persistStatus = Status::OK();
IndexBuildEntry indexbuildEntry(
buildUUID, replState->collectionUUID, CommitQuorumOptions(), replState->indexNames);
@@ -400,15 +399,16 @@ Status IndexBuildsCoordinatorMongod::voteCommitIndexBuild(OperationContext* opCt
indexbuildEntry.setCommitReadyMembers(votersList);
{
- // Upserts doesn't need to acquire pbwm lock.
+ // Updates don't need to acquire pbwm lock.
ShouldNotConflictWithSecondaryBatchApplicationBlock noPBWMBlock(opCtx->lockState());
- upsertStatus = indexbuildentryhelpers::persistCommitReadyMemberInfo(opCtx, indexbuildEntry);
+ persistStatus =
+ indexbuildentryhelpers::persistCommitReadyMemberInfo(opCtx, indexbuildEntry);
}
- if (upsertStatus.isOK()) {
+ if (persistStatus.isOK()) {
_signalIfCommitQuorumIsSatisfied(opCtx, replState);
}
- return upsertStatus;
+ return persistStatus;
}
void IndexBuildsCoordinatorMongod::setSignalAndCancelVoteRequestCbkIfActive(