summaryrefslogtreecommitdiff
path: root/src/mongo/db/s
diff options
context:
space:
mode:
authorPaolo Polato <paolo.polato@mongodb.com>2023-03-17 12:07:55 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2023-03-17 13:02:19 +0000
commitd059b520e57ace9734626b40c8a49e244b01dd78 (patch)
treef41a86bf2214562fd5c43724bc792d45fba47b0c /src/mongo/db/s
parentbf3ecfeeb7c4c0b81daac4f8f9fdd93afc91288f (diff)
downloadmongo-d059b520e57ace9734626b40c8a49e244b01dd78.tar.gz
SERVER-74978 Use insert statement to persist placement info on chunk migration commit
Diffstat (limited to 'src/mongo/db/s')
-rw-r--r--src/mongo/db/s/config/sharding_catalog_manager_chunk_operations.cpp32
1 files changed, 8 insertions, 24 deletions
diff --git a/src/mongo/db/s/config/sharding_catalog_manager_chunk_operations.cpp b/src/mongo/db/s/config/sharding_catalog_manager_chunk_operations.cpp
index 0472e7aa661..24cb9ed9e20 100644
--- a/src/mongo/db/s/config/sharding_catalog_manager_chunk_operations.cpp
+++ b/src/mongo/db/s/config/sharding_catalog_manager_chunk_operations.cpp
@@ -452,26 +452,6 @@ void mergeAllChunksOnShardInTransaction(OperationContext* opCtx,
txn.run(opCtx, updateChunksFn);
}
-/*
- * Creates the request to persist a namespace descriptor object into config.placementHistory.
- */
-write_ops::UpdateCommandRequest composePlacementUpsertRequest(
- const NamespacePlacementType& placementInfo) {
- write_ops::UpdateCommandRequest upsertRequest(
- NamespaceString::kConfigsvrPlacementHistoryNamespace);
- write_ops::UpdateOpEntry upsertEntry;
- upsertEntry.setQ(BSON(NamespacePlacementType::kNssFieldName
- << placementInfo.getNss().ns()
- << NamespacePlacementType::kTimestampFieldName
- << placementInfo.getTimestamp()));
- upsertEntry.setU(write_ops::UpdateModification::parseFromClassicUpdate(placementInfo.toBSON()));
- upsertEntry.setMulti(false);
- // Upsert to account for concurrent migrations.
- upsertEntry.setUpsert(true);
- upsertRequest.setUpdates({std::move(upsertEntry)});
- return upsertRequest;
-};
-
} // namespace
void ShardingCatalogManager::bumpMajorVersionOneChunkPerShard(
@@ -2388,8 +2368,9 @@ void ShardingCatalogManager::_commitChunkMigrationInTransaction(
// descriptor.
auto persistPlacementInfoSubchain = [txnExec,
&txnClient](NamespacePlacementType&& placementInfo) {
- auto upsertRequest = composePlacementUpsertRequest(placementInfo);
- return txnClient.runCRUDOp(upsertRequest, {})
+ write_ops::InsertCommandRequest insertPlacementEntry(
+ NamespaceString::kConfigsvrPlacementHistoryNamespace, {placementInfo.toBSON()});
+ return txnClient.runCRUDOp(insertPlacementEntry, {})
.thenRunOn(txnExec)
.then([](const BatchedCommandResponse& insertPlacementEntryResponse) {
uassertStatusOK(insertPlacementEntryResponse.toStatus());
@@ -2420,8 +2401,11 @@ void ShardingCatalogManager::_commitChunkMigrationInTransaction(
NamespacePlacementType placementInfo(
nss, migrationCommitTime, std::move(shardIds));
placementInfo.setUuid(collUuid);
- auto request = composePlacementUpsertRequest(placementInfo);
- return txnClient.runCRUDOp(request, {});
+ write_ops::InsertCommandRequest insertPlacementEntry(
+ NamespaceString::kConfigsvrPlacementHistoryNamespace,
+ {placementInfo.toBSON()});
+
+ return txnClient.runCRUDOp(insertPlacementEntry, {});
})
.thenRunOn(txnExec)
.then([](const BatchedCommandResponse& insertPlacementEntryResponse) {