diff options
author | Jason Chan <jason.chan@mongodb.com> | 2020-08-10 13:34:32 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-08-18 00:23:39 +0000 |
commit | 91e3352a1aa717674575fce3cc6edb2f279a4479 (patch) | |
tree | 81948e51996b9a4d2b61658e97f030331290ea1b /src/mongo/db/s | |
parent | 99e85a18ec8a12c5988fe03ad83e0f064cc6dd6f (diff) | |
download | mongo-91e3352a1aa717674575fce3cc6edb2f279a4479.tar.gz |
SERVER-49756 Add downgradeOnDiskChanges parameter to setFeatureCompatibilityVersion
Diffstat (limited to 'src/mongo/db/s')
-rw-r--r-- | src/mongo/db/s/SConscript | 1 | ||||
-rw-r--r-- | src/mongo/db/s/config/sharding_catalog_manager_shard_operations.cpp | 31 |
2 files changed, 19 insertions, 13 deletions
diff --git a/src/mongo/db/s/SConscript b/src/mongo/db/s/SConscript index fe32c4782d8..9e4e1426a83 100644 --- a/src/mongo/db/s/SConscript +++ b/src/mongo/db/s/SConscript @@ -251,6 +251,7 @@ env.Library( ], LIBDEPS_PRIVATE=[ '$BUILD_DIR/mongo/db/commands/mongod_fcv', + '$BUILD_DIR/mongo/db/commands/set_feature_compatibility_version_idl', '$BUILD_DIR/mongo/db/pipeline/sharded_agg_helpers', '$BUILD_DIR/mongo/db/snapshot_window_options', '$BUILD_DIR/mongo/db/vector_clock_mongod', diff --git a/src/mongo/db/s/config/sharding_catalog_manager_shard_operations.cpp b/src/mongo/db/s/config/sharding_catalog_manager_shard_operations.cpp index 38d0eb62a06..24a6b890407 100644 --- a/src/mongo/db/s/config/sharding_catalog_manager_shard_operations.cpp +++ b/src/mongo/db/s/config/sharding_catalog_manager_shard_operations.cpp @@ -47,8 +47,8 @@ #include "mongo/db/catalog_raii.h" #include "mongo/db/client.h" #include "mongo/db/commands/feature_compatibility_version.h" -#include "mongo/db/commands/feature_compatibility_version_command_parser.h" #include "mongo/db/commands/feature_compatibility_version_parser.h" +#include "mongo/db/commands/set_feature_compatibility_version_gen.h" #include "mongo/db/namespace_string.h" #include "mongo/db/operation_context.h" #include "mongo/db/repl/repl_client_info.h" @@ -652,24 +652,29 @@ StatusWith<std::string> ShardingCatalogManager::addShard( invariant(!opCtx->lockState()->isLocked()); Lock::SharedLock lk(opCtx->lockState(), FeatureCompatibilityVersion::fcvLock); - BSONObj setFCVCmd; + BSONObjBuilder setFCVBuilder; switch (serverGlobalParams.featureCompatibility.getVersion()) { case ServerGlobalParams::FeatureCompatibility::kLatest: - case ServerGlobalParams::FeatureCompatibility::Version::kUpgradingFrom44To47: - setFCVCmd = BSON(FeatureCompatibilityVersionCommandParser::kCommandName - << FeatureCompatibilityVersionParser::kVersion47 - << WriteConcernOptions::kWriteConcernField - << opCtx->getWriteConcern().toBSON()); + case ServerGlobalParams::FeatureCompatibility::Version::kUpgradingFrom44To47: { + SetFeatureCompatibilityVersion setLatestCmd( + ServerGlobalParams::FeatureCompatibility::kLatest); + // The serialize function generated by IDL requires the DB name to be set. + setLatestCmd.setDbName(NamespaceString::kAdminDb); + setLatestCmd.serialize({}, &setFCVBuilder); break; + } default: - setFCVCmd = BSON(FeatureCompatibilityVersionCommandParser::kCommandName - << FeatureCompatibilityVersionParser::kVersion44 - << WriteConcernOptions::kWriteConcernField - << opCtx->getWriteConcern().toBSON()); + SetFeatureCompatibilityVersion setLastLTSCmd( + ServerGlobalParams::FeatureCompatibility::kLastLTS); + // The serialize function generated by IDL requires the DB name to be set. + setLastLTSCmd.setDbName(NamespaceString::kAdminDb); + setLastLTSCmd.serialize({}, &setFCVBuilder); break; } - auto versionResponse = - _runCommandForAddShard(opCtx, targeter.get(), NamespaceString::kAdminDb, setFCVCmd); + setFCVBuilder.append(WriteConcernOptions::kWriteConcernField, + opCtx->getWriteConcern().toBSON()); + auto versionResponse = _runCommandForAddShard( + opCtx, targeter.get(), NamespaceString::kAdminDb, setFCVBuilder.obj()); if (!versionResponse.isOK()) { return versionResponse.getStatus(); } |