diff options
author | Jordi Serra Torrens <jordi.serra-torrens@mongodb.com> | 2020-11-26 17:29:26 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-12-01 12:22:39 +0000 |
commit | b85442ba1cc20270a3595bba769438394a66e7e4 (patch) | |
tree | 53f9b0f91a3edb79882ae7fe0a4e5fd024b5a6e0 /src/mongo/db/s/shard_metadata_util.cpp | |
parent | 4b8e802d58cdec6e340c6f8cace09224a64c9aa9 (diff) | |
download | mongo-b85442ba1cc20270a3595bba769438394a66e7e4.tar.gz |
SERVER-52588 Making the upgrade/downgrade process work for the Epoch to ClusterTime migration
Diffstat (limited to 'src/mongo/db/s/shard_metadata_util.cpp')
-rw-r--r-- | src/mongo/db/s/shard_metadata_util.cpp | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/src/mongo/db/s/shard_metadata_util.cpp b/src/mongo/db/s/shard_metadata_util.cpp index dd2a0357293..8da1a50bc10 100644 --- a/src/mongo/db/s/shard_metadata_util.cpp +++ b/src/mongo/db/s/shard_metadata_util.cpp @@ -44,7 +44,9 @@ #include "mongo/rpc/get_status_from_command_result.h" #include "mongo/rpc/unique_message.h" #include "mongo/s/catalog/type_chunk.h" +#include "mongo/s/catalog/type_collection.h" #include "mongo/s/chunk_version.h" +#include "mongo/s/sharded_collections_ddl_parameters_gen.h" #include "mongo/s/write_ops/batched_command_response.h" namespace mongo { @@ -485,30 +487,35 @@ Status deleteDatabasesEntry(OperationContext* opCtx, StringData dbName) { } void downgradeShardConfigCollectionEntriesToPre49(OperationContext* opCtx) { - // Clear the 'allowMigrations' field from config.cache.collections + // Clear the 'allowMigrations' and 'timestamp' fields from config.cache.collections LOGV2(5189100, "Starting downgrade of config.cache.collections"); - write_ops::Update clearAllowMigrations(NamespaceString::kShardConfigCollectionsNamespace, [] { + write_ops::Update clearFields(NamespaceString::kShardConfigCollectionsNamespace, [] { + BSONObj unsetFields = + BSON(ShardCollectionType::kPre50CompatibleAllowMigrationsFieldName << ""); + if (feature_flags::gShardingFullDDLSupport.isEnabledAndIgnoreFCV()) { + unsetFields = unsetFields.addFields(BSON(CollectionType::kTimestampFieldName << "")); + } + write_ops::UpdateOpEntry u; u.setQ({}); - u.setU(write_ops::UpdateModification::parseFromClassicUpdate( - BSON("$unset" << BSON(ShardCollectionType::kPre50CompatibleAllowMigrationsFieldName - << "")))); + u.setU( + write_ops::UpdateModification::parseFromClassicUpdate(BSON("$unset" << unsetFields))); u.setMulti(true); return std::vector{u}; }()); - clearAllowMigrations.setWriteCommandBase([] { + clearFields.setWriteCommandBase([] { write_ops::WriteCommandBase base; base.setOrdered(false); return base; }()); DBDirectClient client(opCtx); - const auto commandResult = client.runCommand(clearAllowMigrations.serialize({})); + const auto commandResult = client.runCommand(clearFields.serialize({})); uassertStatusOK(getStatusFromWriteCommandResponse(commandResult->getCommandReply())); - LOGV2(5189101, "Succesfully downgraded config.cache.collections"); + LOGV2(5189101, "Successfully downgraded config.cache.collections"); } } // namespace shardmetadatautil |