summaryrefslogtreecommitdiff
path: root/src/mongo/db
diff options
context:
space:
mode:
authorJack Mulrow <jack.mulrow@mongodb.com>2023-04-14 17:53:34 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2023-04-14 19:11:19 +0000
commit8b08b115667c0b75c569a2da2b0a5d9d166503b7 (patch)
treeb7b28319d4ea12b4e7c03d10db33f33150ad60f9 /src/mongo/db
parent8dd4ecc222a453d9026fe8f26245ea983a0abf9a (diff)
downloadmongo-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.cpp12
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,