summaryrefslogtreecommitdiff
path: root/src/mongo/db/s
diff options
context:
space:
mode:
authorJason Chan <jason.chan@mongodb.com>2020-08-10 13:34:32 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-08-18 00:23:39 +0000
commit91e3352a1aa717674575fce3cc6edb2f279a4479 (patch)
tree81948e51996b9a4d2b61658e97f030331290ea1b /src/mongo/db/s
parent99e85a18ec8a12c5988fe03ad83e0f064cc6dd6f (diff)
downloadmongo-91e3352a1aa717674575fce3cc6edb2f279a4479.tar.gz
SERVER-49756 Add downgradeOnDiskChanges parameter to setFeatureCompatibilityVersion
Diffstat (limited to 'src/mongo/db/s')
-rw-r--r--src/mongo/db/s/SConscript1
-rw-r--r--src/mongo/db/s/config/sharding_catalog_manager_shard_operations.cpp31
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();
}