diff options
author | Marcos Jose Grillo Ramirez <marcos.grillo@mongodb.com> | 2022-03-16 19:02:51 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-04-11 10:33:26 +0000 |
commit | 8ba7f40afb93eb23ec60015a62c1b5eaeb79f840 (patch) | |
tree | 9d84aeeb9e756bc377e419fe4104cd153dbf96dd | |
parent | a4cf24004bf4a7b8a9f8b5c187e38f861b2bb8e5 (diff) | |
download | mongo-8ba7f40afb93eb23ec60015a62c1b5eaeb79f840.tar.gz |
SERVER-64519 Filter fields attached to the CritSec reason when creating a collection to make collection creation backward compatible
(cherry picked from commit eef965232b1932c519e4df3e436c8cc603753b72)
-rw-r--r-- | src/mongo/db/s/create_collection_coordinator.cpp | 18 | ||||
-rw-r--r-- | src/mongo/db/s/create_collection_coordinator.h | 2 |
2 files changed, 16 insertions, 4 deletions
diff --git a/src/mongo/db/s/create_collection_coordinator.cpp b/src/mongo/db/s/create_collection_coordinator.cpp index 3dfa6129954..dd75e93019f 100644 --- a/src/mongo/db/s/create_collection_coordinator.cpp +++ b/src/mongo/db/s/create_collection_coordinator.cpp @@ -383,11 +383,23 @@ CreateCollectionCoordinator::CreateCollectionCoordinator(ShardingDDLCoordinatorS const BSONObj& initialState) : ShardingDDLCoordinator(service, initialState), _doc(CreateCollectionCoordinatorDocument::parse( - IDLParserErrorContext("CreateCollectionCoordinatorDocument"), initialState)), - _critSecReason(BSON("command" + IDLParserErrorContext("CreateCollectionCoordinatorDocument"), initialState)) { + + // TODO SERVER-64559: remove request from critSec reason. + auto filter = BSON(CreateCollectionRequest::kShardKeyFieldName + << 1 << CreateCollectionRequest::kUniqueFieldName << 1 + << CreateCollectionRequest::kNumInitialChunksFieldName << 1 + << CreateCollectionRequest::kPresplitHashedZonesFieldName << 1 + << CreateCollectionRequest::kInitialSplitPointsFieldName << 1 + << CreateCollectionRequest::kTimeseriesFieldName << 1 + << CreateCollectionRequest::kCollationFieldName << 1); + + _critSecReason = BSON("command" << "createCollection" << "ns" << nss().toString() << "request" - << _doc.getCreateCollectionRequest().toBSON())) {} + << _doc.getCreateCollectionRequest().toBSON().filterFieldsUndotted(filter, + true)); +} boost::optional<BSONObj> CreateCollectionCoordinator::reportForCurrentOp( MongoProcessInterface::CurrentOpConnectionsMode connMode, diff --git a/src/mongo/db/s/create_collection_coordinator.h b/src/mongo/db/s/create_collection_coordinator.h index bee8b8d2c79..3ecb0ac2a44 100644 --- a/src/mongo/db/s/create_collection_coordinator.h +++ b/src/mongo/db/s/create_collection_coordinator.h @@ -147,7 +147,7 @@ private: void _logEndCreateCollection(OperationContext* opCtx); CreateCollectionCoordinatorDocument _doc; - const BSONObj _critSecReason; + BSONObj _critSecReason; // Objects generated on each execution. boost::optional<ShardKeyPattern> _shardKeyPattern; |