summaryrefslogtreecommitdiff
path: root/src/mongo/db/commands
diff options
context:
space:
mode:
authorLuxi Liu <luxi.liu@mongodb.com>2022-08-19 14:33:19 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-08-19 15:04:15 +0000
commit4f09355fd05895a9d7e702469d9f52eb206f1680 (patch)
tree3d0d4f3c827d2a07926193ab07c21ccc8bb9af01 /src/mongo/db/commands
parent7d7518830818fd84a13c3a408830c3c5ab01117c (diff)
downloadmongo-4f09355fd05895a9d7e702469d9f52eb206f1680.tar.gz
SERVER-67946 added downgrading->upgrading path sharding tests
Diffstat (limited to 'src/mongo/db/commands')
-rw-r--r--src/mongo/db/commands/feature_compatibility_version.cpp4
-rw-r--r--src/mongo/db/commands/set_feature_compatibility_version_command.cpp14
2 files changed, 16 insertions, 2 deletions
diff --git a/src/mongo/db/commands/feature_compatibility_version.cpp b/src/mongo/db/commands/feature_compatibility_version.cpp
index 674be1c4ff1..8ad7cae43f6 100644
--- a/src/mongo/db/commands/feature_compatibility_version.cpp
+++ b/src/mongo/db/commands/feature_compatibility_version.cpp
@@ -329,10 +329,10 @@ void FeatureCompatibilityVersion::updateFeatureCompatibilityVersionDocument(
// Only transition to fully upgraded or downgraded states when we
// have completed all required upgrade/downgrade behavior.
+ // If kDowngradingFromLatestToLastLTS->kLatest, we want to get the transitional version
+ // i.e. kUpgradingFromLastLTSToLatest
auto transitioningVersion = setTargetVersion &&
serverGlobalParams.featureCompatibility.isUpgradingOrDowngrading(fromVersion) &&
- // if kDowngradingFromLatestToLastLTS->kLatest, we want to get the transitional version
- // i.e. kUpgradingFromLastLTSToLatest
!(fromVersion == GenericFCV::kDowngradingFromLatestToLastLTS &&
newVersion == GenericFCV::kLatest)
? fromVersion
diff --git a/src/mongo/db/commands/set_feature_compatibility_version_command.cpp b/src/mongo/db/commands/set_feature_compatibility_version_command.cpp
index 1b1e280ecd2..6ce53c6258b 100644
--- a/src/mongo/db/commands/set_feature_compatibility_version_command.cpp
+++ b/src/mongo/db/commands/set_feature_compatibility_version_command.cpp
@@ -103,11 +103,14 @@ namespace {
using GenericFCV = multiversion::GenericFCV;
+MONGO_FAIL_POINT_DEFINE(failBeforeTransitioning);
MONGO_FAIL_POINT_DEFINE(failUpgrading);
MONGO_FAIL_POINT_DEFINE(hangWhileUpgrading);
+MONGO_FAIL_POINT_DEFINE(failBeforeSendingShardsToDowngrading);
MONGO_FAIL_POINT_DEFINE(failDowngrading);
MONGO_FAIL_POINT_DEFINE(hangWhileDowngrading);
MONGO_FAIL_POINT_DEFINE(hangBeforeUpdatingFcvDoc);
+MONGO_FAIL_POINT_DEFINE(failBeforeUpdatingFcvDoc);
/**
* Ensures that only one instance of setFeatureCompatibilityVersion can run at a given time.
@@ -332,6 +335,10 @@ public:
const auto fcvChangeRegion(
FeatureCompatibilityVersion::enterFCVChangeRegion(opCtx));
+ uassert(ErrorCodes::Error(6744303),
+ "Failing upgrade due to 'failBeforeTransitioning' failpoint set",
+ !failBeforeTransitioning.shouldFail());
+
FeatureCompatibilityVersion::updateFeatureCompatibilityVersionDocument(
opCtx,
actualVersion,
@@ -392,6 +399,10 @@ public:
// downgraded requestedVersion.
const auto fcvChangeRegion(FeatureCompatibilityVersion::enterFCVChangeRegion(opCtx));
+ uassert(ErrorCodes::Error(6794601),
+ "Failing downgrade due to 'failBeforeUpdatingFcvDoc' failpoint set",
+ !failBeforeUpdatingFcvDoc.shouldFail());
+
hangBeforeUpdatingFcvDoc.pauseWhileSet();
FeatureCompatibilityVersion::updateFeatureCompatibilityVersionDocument(
@@ -731,6 +742,9 @@ private:
boost::optional<SharedSemiFuture<void>> chunkResizeAsyncTask;
if (serverGlobalParams.clusterRole == ClusterRole::ConfigServer) {
+ uassert(ErrorCodes::Error(6794600),
+ "Failing downgrade due to 'failBeforeSendingShardsToDowngrading' failpoint set",
+ !failBeforeSendingShardsToDowngrading.shouldFail());
// Tell the shards to enter phase-1 of setFCV
_sendSetFCVRequestToShards(opCtx, request, changeTimestamp, SetFCVPhaseEnum::kStart);
}