diff options
author | Jack Mulrow <jack.mulrow@mongodb.com> | 2023-04-14 17:53:34 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2023-04-14 19:11:19 +0000 |
commit | 8b08b115667c0b75c569a2da2b0a5d9d166503b7 (patch) | |
tree | b7b28319d4ea12b4e7c03d10db33f33150ad60f9 /src/mongo/db | |
parent | 8dd4ecc222a453d9026fe8f26245ea983a0abf9a (diff) | |
download | mongo-8b08b115667c0b75c569a2da2b0a5d9d166503b7.tar.gz |
SERVER-74445 Fix checkMetadataConsistency with a catalog shard
Diffstat (limited to 'src/mongo/db')
-rw-r--r-- | src/mongo/db/s/shardsvr_check_metadata_consistency_command.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/mongo/db/s/shardsvr_check_metadata_consistency_command.cpp b/src/mongo/db/s/shardsvr_check_metadata_consistency_command.cpp index 653d41c9ee7..cb96382be0f 100644 --- a/src/mongo/db/s/shardsvr_check_metadata_consistency_command.cpp +++ b/src/mongo/db/s/shardsvr_check_metadata_consistency_command.cpp @@ -177,19 +177,24 @@ public: std::vector<std::pair<ShardId, BSONObj>> requests; // Shard requests + const auto shardOpKey = UUID::gen(); ShardsvrCheckMetadataConsistencyParticipant participantRequest{nss}; participantRequest.setCommonFields(request().getCommonFields()); participantRequest.setPrimaryShardId(ShardingState::get(opCtx)->shardId()); participantRequest.setCursor(request().getCursor()); const auto participants = Grid::get(opCtx)->shardRegistry()->getAllShardIds(opCtx); + auto participantRequestWithOpKey = + appendOpKey(shardOpKey, participantRequest.toBSON({})); for (const auto& shardId : participants) { - requests.emplace_back(shardId, participantRequest.toBSON({})); + requests.emplace_back(shardId, participantRequestWithOpKey.getOwned()); } // Config server request + const auto configOpKey = UUID::gen(); ConfigsvrCheckMetadataConsistency configRequest{nss}; participantRequest.setCursor(request().getCursor()); - requests.emplace_back(ShardId::kConfigServerId, configRequest.toBSON({})); + requests.emplace_back(ShardId::kConfigServerId, + appendOpKey(configOpKey, configRequest.toBSON({}))); // Take a DDL lock on the database static constexpr StringData kLockReason{"checkMetadataConsistency"_sd}; @@ -205,7 +210,8 @@ public: ReadPreferenceSetting(ReadPreference::PrimaryOnly), requests, false /* allowPartialResults */, - Shard::RetryPolicy::kIdempotentOrCursorInvalidated); + Shard::RetryPolicy::kIdempotentOrCursorInvalidated, + {shardOpKey, configOpKey}); } CursorInitialReply _mergeCursors(OperationContext* opCtx, |