summaryrefslogtreecommitdiff
path: root/jstests/multiVersion
diff options
context:
space:
mode:
authorwenqinYe <wenqin908@gmail.com>2023-02-15 22:34:01 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2023-02-16 05:29:18 +0000
commitc7348303489ddd5e6fbaf89fda55e33810023130 (patch)
treeb021f33bef967c0924289c77b299d7ba0c6fbf33 /jstests/multiVersion
parent924f756576cfaad5a4253736394ae3e8973c79bb (diff)
downloadmongo-c7348303489ddd5e6fbaf89fda55e33810023130.tar.gz
SERVER-73277: Prevent downgrading to FCV lower than 7.0 when the catalog shard contains user data
Diffstat (limited to 'jstests/multiVersion')
-rw-r--r--jstests/multiVersion/targetedTestsLastLtsFeatures/set_fcv_prevent_invalid_downgrade_with_catalog_shard.js41
1 files changed, 41 insertions, 0 deletions
diff --git a/jstests/multiVersion/targetedTestsLastLtsFeatures/set_fcv_prevent_invalid_downgrade_with_catalog_shard.js b/jstests/multiVersion/targetedTestsLastLtsFeatures/set_fcv_prevent_invalid_downgrade_with_catalog_shard.js
new file mode 100644
index 00000000000..18cffdc6758
--- /dev/null
+++ b/jstests/multiVersion/targetedTestsLastLtsFeatures/set_fcv_prevent_invalid_downgrade_with_catalog_shard.js
@@ -0,0 +1,41 @@
+/**
+ * Test to ensure that:
+ * 1. The FCV cannot be downgraded to a version that does not have catalog shards if catalog
+ * shard is enabled.
+ * 2. If the FCV does get downgraded to a version that does not support catalog shards, a
+ * catalog shard cannot be created (this can occur if an FCV downgrade happens concurrently
+ * with the creation of a catalog shard).
+ *
+ * @tags: [featureFlagCatalogShard]
+ */
+(function() {
+"use strict";
+
+/* Downgrading FCV to an unsupported version when catalogShard is enabled. */
+jsTest.log("Downgrading FCV to an unsupported version when catalogShard is enabled.");
+var st = new ShardingTest({catalogShard: true});
+var mongosAdminDB = st.s.getDB("admin");
+
+assert.commandFailed(mongosAdminDB.runCommand({setFeatureCompatibilityVersion: lastLTSFCV}),
+ `cannot downgrade featureCompatibilityVersion to ${
+ lastLTSFCV} when catalog shard is enabled as it may result in data loss`);
+
+var res = st.config0.getDB("admin").runCommand({getParameter: 1, featureCompatibilityVersion: 1});
+assert(res.featureCompatibilityVersion);
+assert.eq(res.featureCompatibilityVersion.version, latestFCV);
+
+st.stop();
+
+/* Attempting to create a catalogShard on an unsupported FCV. */
+jsTest.log("Attempting to create a catalogShard on an unsupported FCV.");
+const kCatalogShardId = "catalogShard";
+st = new ShardingTest({catalogShard: false});
+mongosAdminDB = st.s.getDB("admin");
+
+assert.commandWorked(mongosAdminDB.runCommand({setFeatureCompatibilityVersion: lastLTSFCV}));
+assert.commandFailed(
+ mongosAdminDB.runCommand({addShard: st.configRS.getURL(), name: kCatalogShardId}),
+ "Cannot add a shard with catalogShard as its name if the catalog shard feature flag is not enabled");
+
+st.stop();
+})();