diff options
author | Paolo Polato <paolo.polato@mongodb.com> | 2023-03-17 12:07:55 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2023-03-17 13:02:19 +0000 |
commit | d059b520e57ace9734626b40c8a49e244b01dd78 (patch) | |
tree | f41a86bf2214562fd5c43724bc792d45fba47b0c /src/mongo/db/s | |
parent | bf3ecfeeb7c4c0b81daac4f8f9fdd93afc91288f (diff) | |
download | mongo-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.cpp | 32 |
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) { |