summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJack Mulrow <jack.mulrow@mongodb.com>2023-04-04 01:37:34 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2023-04-07 03:50:00 +0000
commit47629b53036f03296bca205304fcd586d9173db0 (patch)
tree64705ae7467e92728fdd9a6d2f65d9c75710cbcb
parentd7e04f8258e2e798602368958974e78bfc1ab288 (diff)
downloadmongo-47629b53036f03296bca205304fcd586d9173db0.tar.gz
SERVER-74498 Remove temporary_catalog_shard_incompatible tags (part 1)
-rw-r--r--jstests/sharding/allow_partial_results.js10
-rw-r--r--jstests/sharding/allow_partial_results_nshards.js5
-rw-r--r--jstests/sharding/analyze_shard_key/analyze_shard_key_basic.js14
-rw-r--r--jstests/sharding/analyze_shard_key/analyze_shard_key_read_preference.js3
-rw-r--r--jstests/sharding/analyze_shard_key/refresh_sample_rates.js12
-rw-r--r--jstests/sharding/basic_sharding_params.js15
-rw-r--r--jstests/sharding/change_stream_error_label.js12
-rw-r--r--jstests/sharding/check_metadata_consistency.js5
-rw-r--r--jstests/sharding/cluster_cardinality_parameter.js3
-rw-r--r--jstests/sharding/commands_that_write_accept_wc_configRS.js4
-rw-r--r--jstests/sharding/compact_structured_encryption_data_coordinator.js8
-rw-r--r--jstests/sharding/compound_hashed_shard_key_presplitting.js1
-rw-r--r--jstests/sharding/config_settings_schema_upgrade_downgrade.js4
-rw-r--r--jstests/sharding/configsvr_retries_createindex_on_stale_config.js5
-rw-r--r--jstests/sharding/convert_to_and_from_sharded.js5
-rw-r--r--jstests/sharding/implicit_default_write_concern_add_shard.js6
-rw-r--r--jstests/sharding/index_and_collection_option_propagation.js5
-rw-r--r--jstests/sharding/internal_txns/kill_sessions.js6
-rw-r--r--jstests/sharding/internal_txns/sessions.js12
-rw-r--r--jstests/sharding/key_rotation.js3
-rw-r--r--jstests/sharding/lagged_config_secondary.js3
-rw-r--r--jstests/sharding/libs/resharding_test_fixture.js13
-rw-r--r--jstests/sharding/listDatabases.js10
-rw-r--r--jstests/sharding/merge_all_chunks_on_shard.js1
-rw-r--r--jstests/sharding/merge_with_chunk_migrations.js20
-rw-r--r--jstests/sharding/merge_with_drop_shard.js24
-rw-r--r--jstests/sharding/nonreplicated_uuids_on_shardservers.js5
-rw-r--r--jstests/sharding/query/owning_shard_expression.js4
-rw-r--r--jstests/sharding/query/view_rewrite.js4
-rw-r--r--jstests/sharding/reconfig_fails_no_cwwc_set_sharding.js4
-rw-r--r--jstests/sharding/resharding_change_stream_namespace_filtering.js3
-rw-r--r--jstests/sharding/resharding_disallow_drop.js3
-rw-r--r--jstests/sharding/resharding_retryable_writes.js4
-rw-r--r--jstests/sharding/resharding_size_estimate.js3
-rw-r--r--jstests/sharding/retryable_writes.js14
-rw-r--r--jstests/sharding/set_fcv_logging.js3
-rw-r--r--jstests/sharding/unique_index_on_shardservers.js8
-rw-r--r--jstests/sharding/use_rsm_data_for_cs.js7
-rw-r--r--src/mongo/db/pipeline/document_source_cursor.cpp15
-rw-r--r--src/mongo/db/pipeline/document_source_merge.cpp3
40 files changed, 182 insertions, 107 deletions
diff --git a/jstests/sharding/allow_partial_results.js b/jstests/sharding/allow_partial_results.js
index e96331904a5..f3d79b4f92e 100644
--- a/jstests/sharding/allow_partial_results.js
+++ b/jstests/sharding/allow_partial_results.js
@@ -1,8 +1,6 @@
/**
* Tests that the 'allowPartialResults' option to find is respected, and that aggregation does not
* accept the 'allowPartialResults' option.
- *
- * @tags: [temporary_catalog_shard_incompatible]
*/
// This test shuts down a shard.
@@ -28,11 +26,11 @@ for (let i = -50; i < 50; i++) {
assert.commandWorked(bulk.execute());
jsTest.log("Create a sharded collection with one chunk on each of the two shards.");
-st.ensurePrimaryShard(dbName, st.shard0.shardName);
+st.ensurePrimaryShard(dbName, st.shard1.shardName);
assert.commandWorked(st.s.adminCommand({enableSharding: dbName}));
assert.commandWorked(st.s.adminCommand({shardCollection: ns, key: {_id: 1}}));
assert.commandWorked(st.s.adminCommand({split: ns, middle: {_id: 0}}));
-assert.commandWorked(st.s.adminCommand({moveChunk: ns, find: {_id: 0}, to: st.shard1.shardName}));
+assert.commandWorked(st.s.adminCommand({moveChunk: ns, find: {_id: 0}, to: st.shard0.shardName}));
let findRes;
@@ -59,8 +57,8 @@ assert.eq(batchSize, findRes.cursor.firstBatch.length);
assert.eq(undefined, findRes.cursor.partialResultsReturned);
nRemainingDocs -= batchSize;
-jsTest.log("Stopping " + st.shard0.shardName);
-st.rs0.stopSet();
+jsTest.log("Stopping " + st.shard1.shardName);
+st.rs1.stopSet();
nRemainingDocs -= nDocs / 2 - batchSize;
// Do getMore with the returned cursor.
diff --git a/jstests/sharding/allow_partial_results_nshards.js b/jstests/sharding/allow_partial_results_nshards.js
index ebad306982e..83ea89eba9a 100644
--- a/jstests/sharding/allow_partial_results_nshards.js
+++ b/jstests/sharding/allow_partial_results_nshards.js
@@ -4,7 +4,6 @@
* @tags: [
* requires_replication,
* requires_sharding,
- * temporary_catalog_shard_incompatible,
* ]
*/
@@ -34,7 +33,7 @@ const testColl = mongosDB.test;
// Enable sharding on the the test database and ensure that the primary is on shard0.
assert.commandWorked(mongosDB.adminCommand({enableSharding: mongosDB.getName()}));
-st.ensurePrimaryShard(mongosDB.getName(), st.rs0.getURL());
+st.ensurePrimaryShard(mongosDB.getName(), st.rs1.getURL());
// Shard the collection on _id, split at {_id:0}, and move the upper chunk to the second shard.
st.shardColl(testColl, {_id: 1}, {_id: 0}, {_id: 1}, mongosDB.getName(), true);
@@ -107,7 +106,7 @@ assertMatchingLogLineExists(Object.assign({nShards: 2}, getMoreCmd));
assert.eq(getMoreRes.cursor.partialResultsReturned, undefined);
// Now stop shard0.
-st.rs0.stopSet();
+st.rs1.stopSet();
// Issue another getMore with a higher batchSize.
getMoreCmd.comment = "allow_partial_results_getmore_nshards_2_again";
diff --git a/jstests/sharding/analyze_shard_key/analyze_shard_key_basic.js b/jstests/sharding/analyze_shard_key/analyze_shard_key_basic.js
index 4ff79e6c7cc..3a034cc2142 100644
--- a/jstests/sharding/analyze_shard_key/analyze_shard_key_basic.js
+++ b/jstests/sharding/analyze_shard_key/analyze_shard_key_basic.js
@@ -1,7 +1,7 @@
/**
* Tests support for the analyzeShardKey command.
*
- * @tags: [requires_fcv_70, temporary_catalog_shard_incompatible]
+ * @tags: [requires_fcv_70]
*/
(function() {
"use strict";
@@ -225,9 +225,15 @@ function testNotSupportReadWriteConcern(writeConn, testCases) {
// The analyzeShardKey command is not supported on dedicated configsvr mongods.
const isCatalogShardEnabled = CatalogShardUtil.isEnabledIgnoringFCV(st);
st.configRS.nodes.forEach(node => {
- // Don't expect a sharded collection since the config server isn't enabled as a shard and
- // won't have chunks.
- testCases.push({conn: node, isSupported: isCatalogShardEnabled, doNotExpectColl: true});
+ // If catalog shard mode isn't enabled, don't expect a sharded collection since the config
+ // server isn't enabled as a shard and won't have chunks.
+ testCases.push({
+ conn: node,
+ isSupported: isCatalogShardEnabled,
+ // The config server is shard0 in catalog shard mode.
+ isPrimaryShardMongod: TestData.catalogShard,
+ doNotExpectColl: !TestData.catalogShard
+ });
});
testNonExistingCollection(testCases);
diff --git a/jstests/sharding/analyze_shard_key/analyze_shard_key_read_preference.js b/jstests/sharding/analyze_shard_key/analyze_shard_key_read_preference.js
index 7bd52d61a9b..60e1313a3f7 100644
--- a/jstests/sharding/analyze_shard_key/analyze_shard_key_read_preference.js
+++ b/jstests/sharding/analyze_shard_key/analyze_shard_key_read_preference.js
@@ -3,8 +3,7 @@
*
* TODO (SERVER-74568): SdamServerSelector sometimes doesn't fully respect client readPreference for
* config shard.
- *
- * @tags: [requires_fcv_70, temporary_catalog_shard_incompatible]
+ * @tags: [requires_fcv_70, catalog_shard_incompatible]
*/
(function() {
"use strict";
diff --git a/jstests/sharding/analyze_shard_key/refresh_sample_rates.js b/jstests/sharding/analyze_shard_key/refresh_sample_rates.js
index 3e6b0c8ff66..2dab18df68d 100644
--- a/jstests/sharding/analyze_shard_key/refresh_sample_rates.js
+++ b/jstests/sharding/analyze_shard_key/refresh_sample_rates.js
@@ -3,7 +3,7 @@
* primary mongod in a sharded cluster and the primary mongod in standalone replica set, and that
* it returns correct sample rates.
*
- * @tags: [requires_fcv_70, requires_persistence, temporary_catalog_shard_incompatible]
+ * @tags: [requires_fcv_70, requires_persistence]
*/
(function() {
"use strict";
@@ -284,6 +284,7 @@ function runTest(createConnFn, rst, samplerNames) {
s2: {setParameter: setParameterOpts}
},
shards: 1,
+ config: 3,
rs: {nodes: 1, setParameter: setParameterOpts},
other: {
configOptions: {setParameter: setParameterOpts},
@@ -300,9 +301,12 @@ function runTest(createConnFn, rst, samplerNames) {
numQueriesExecutedPerSecond: 1
};
assert.commandFailedWithCode(st.s.adminCommand(cmdObj), ErrorCodes.CommandNotFound);
- st.rs0.nodes.forEach(node => {
- assert.commandFailedWithCode(node.adminCommand(cmdObj), ErrorCodes.IllegalOperation);
- });
+ if (!TestData.catalogShard) {
+ // Shard0 is the config server in catalog shard mode.
+ st.rs0.nodes.forEach(node => {
+ assert.commandFailedWithCode(node.adminCommand(cmdObj), ErrorCodes.IllegalOperation);
+ });
+ }
st.configRS.getSecondaries(node => {
assert.commandFailedWithCode(node.adminCommand(cmdObj), ErrorCodes.NotWritablePrimary);
});
diff --git a/jstests/sharding/basic_sharding_params.js b/jstests/sharding/basic_sharding_params.js
index 8ab7c585147..0790e39c45d 100644
--- a/jstests/sharding/basic_sharding_params.js
+++ b/jstests/sharding/basic_sharding_params.js
@@ -1,6 +1,5 @@
/**
* Test of complex sharding initialization
- * @tags: [temporary_catalog_shard_incompatible]
*/
(function() {
@@ -46,7 +45,12 @@ function shardingTestUsingObjects() {
assert(s0.commandLine.hasOwnProperty("vvvvvv"));
assert(s1.commandLine.hasOwnProperty("vvvvv"));
- assert(c0.commandLine.hasOwnProperty("vvvv"));
+ if (!TestData.catalogShard) {
+ assert(c0.commandLine.hasOwnProperty("vvvv"));
+ } else {
+ // Same as shard 1.
+ assert(c0.commandLine.hasOwnProperty("vvv"));
+ }
assert(rs0_d0.commandLine.hasOwnProperty("vvv"));
assert(rs1_d0.commandLine.hasOwnProperty("vv"));
assert(rs1_a1.commandLine.hasOwnProperty("v"));
@@ -82,7 +86,12 @@ function shardingTestUsingArrays() {
assert(s0.commandLine.hasOwnProperty("vvvvv"));
assert(s1.commandLine.hasOwnProperty("vvvv"));
- assert(c0.commandLine.hasOwnProperty("vvv"));
+ if (!TestData.catalogShard) {
+ assert(c0.commandLine.hasOwnProperty("vvv"));
+ } else {
+ // Same as shard 1.
+ assert(c0.commandLine.hasOwnProperty("vv"));
+ }
assert(rs0_d0.commandLine.hasOwnProperty("vv"));
assert(rs1_d0.commandLine.hasOwnProperty("v"));
diff --git a/jstests/sharding/change_stream_error_label.js b/jstests/sharding/change_stream_error_label.js
index d2dad6a061f..2e4476a46df 100644
--- a/jstests/sharding/change_stream_error_label.js
+++ b/jstests/sharding/change_stream_error_label.js
@@ -4,7 +4,6 @@
* @tags: [
* requires_sharding,
* uses_change_streams,
- * temporary_catalog_shard_incompatible,
* ]
*/
(function() {
@@ -106,7 +105,12 @@ assert.eq(findCursor.objsLeftInBatch(), 0);
const aggCursor = coll.aggregate([{$match: {}}, {$sort: {_id: 1}}], {cursor: {batchSize: 0}});
// Now stop shard0...
-st.rs0.stopSet();
+if (!TestData.catalogShard) {
+ st.rs0.stopSet();
+} else {
+ // The config server is shard0 in catalog shard mode and we'll restart it later.
+ st.rs0.stopSet(undefined, true /* forRestart */);
+}
// ... and confirm that getMore on the $changeStream throws one of the expected exceptions.
let err = assert.throws(() => assert.soon(() => csCursor.hasNext()));
@@ -152,5 +156,9 @@ assert.commandFailedWithCode(err, ErrorCodes.FailedToSatisfyReadPreference);
// ... but does NOT include the "ResumableChangeStreamError" error label.
assert(!("errorLabels" in err), err);
+if (TestData.catalogShard) {
+ // shard0 is the config server and it needs to be up for ShardingTest shutdown.
+ st.rs0.startSet(undefined, true /* forRestart */);
+}
st.stop();
}());
diff --git a/jstests/sharding/check_metadata_consistency.js b/jstests/sharding/check_metadata_consistency.js
index 8b2ea83ee3b..994b16dc494 100644
--- a/jstests/sharding/check_metadata_consistency.js
+++ b/jstests/sharding/check_metadata_consistency.js
@@ -1,12 +1,11 @@
/*
* Tests to validate the correct behaviour of checkMetadataConsistency command.
*
- *
+ * TODO SERVER-74445: Fix cluster level checkMetadataConsistency command with a catalog shard.
* @tags: [
* featureFlagCheckMetadataConsistency,
* requires_fcv_70,
- * # TODO SERVER-74445: Remove tag once the command will be compatible with catalog shard
- * temporary_catalog_shard_incompatible,
+ * catalog_shard_incompatible,
* ]
*/
diff --git a/jstests/sharding/cluster_cardinality_parameter.js b/jstests/sharding/cluster_cardinality_parameter.js
index bf3f2d43d9b..9bec9f40167 100644
--- a/jstests/sharding/cluster_cardinality_parameter.js
+++ b/jstests/sharding/cluster_cardinality_parameter.js
@@ -2,8 +2,9 @@
* Tests that the cluster parameter "shardedClusterCardinalityForDirectConns" has the correct value
* after upgrade, downgrade, and addShard.
*
+ * TODO SERVER-75391: Enable when catalog shards can downgrade FCV
* @tags: [multiversion_incompatible, featureFlagClusterCardinalityParameter,
- * temporary_catalog_shard_incompatible]
+ * catalog_shard_incompatible]
*/
(function() {
diff --git a/jstests/sharding/commands_that_write_accept_wc_configRS.js b/jstests/sharding/commands_that_write_accept_wc_configRS.js
index 992b2a6748a..b722d96472a 100644
--- a/jstests/sharding/commands_that_write_accept_wc_configRS.js
+++ b/jstests/sharding/commands_that_write_accept_wc_configRS.js
@@ -10,7 +10,9 @@
* This test is labeled resource intensive because its total io_write is 70MB compared to a median
* of 5MB across all sharding tests in wiredTiger.
*
- * @tags: [resource_intensive, temporary_catalog_shard_incompatible]
+ * Incompatible with catalog shard because it disables replication on shards but expects the
+ * config server to still satisfy majority write concern, which can't be true for a catalog shard.
+ * @tags: [resource_intensive, catalog_shard_incompatible]
*/
load('jstests/libs/write_concern_util.js');
load('jstests/multiVersion/libs/auth_helpers.js');
diff --git a/jstests/sharding/compact_structured_encryption_data_coordinator.js b/jstests/sharding/compact_structured_encryption_data_coordinator.js
index 8e4f6aa763d..b909dbd10c5 100644
--- a/jstests/sharding/compact_structured_encryption_data_coordinator.js
+++ b/jstests/sharding/compact_structured_encryption_data_coordinator.js
@@ -2,7 +2,6 @@
// @tags: [
// requires_sharding,
// requires_fcv_70,
-// temporary_catalog_shard_incompatible
// ]
(function() {
@@ -12,11 +11,16 @@ load('jstests/fle2/libs/encrypted_client_util.js');
const options = {
mongos: 1,
- config: 1,
shards: 1,
rs: {nodes: [{}]},
};
+if (!TestData.catalogShard) {
+ // Setting config options will override shard options in catalog shard mode, which doesn't set
+ // the right audit node options on the catalog shard.
+ options.config = 1;
+}
+
const kHaveAuditing = buildInfo().modules.includes("enterprise");
if (kHaveAuditing) {
jsTest.log('Including test for audit events since this is an enterprise build');
diff --git a/jstests/sharding/compound_hashed_shard_key_presplitting.js b/jstests/sharding/compound_hashed_shard_key_presplitting.js
index 45530ce3e32..9f5cf111c6a 100644
--- a/jstests/sharding/compound_hashed_shard_key_presplitting.js
+++ b/jstests/sharding/compound_hashed_shard_key_presplitting.js
@@ -4,7 +4,6 @@
*
* @tags: [
* multiversion_incompatible,
- * temporary_catalog_shard_incompatible,
* ]
*/
(function() {
diff --git a/jstests/sharding/config_settings_schema_upgrade_downgrade.js b/jstests/sharding/config_settings_schema_upgrade_downgrade.js
index 865ff3214cc..83a033d482e 100644
--- a/jstests/sharding/config_settings_schema_upgrade_downgrade.js
+++ b/jstests/sharding/config_settings_schema_upgrade_downgrade.js
@@ -4,11 +4,13 @@
* Tests that a schema is added to the config.settings collection on upgrade and removed on
* downgrade.
*
+ * Incompatible with a catalog shard because catalog shards can't downgrade FCV below 7.0, and this
+ * test is only for that particular transition.
* @tags: [
* multiversion_incompatible,
* featureFlagConfigSettingsSchema,
* does_not_support_stepdowns,
- * temporary_catalog_shard_incompatible,
+ * catalog_shard_incompatible,
* ]
*/
(function() {
diff --git a/jstests/sharding/configsvr_retries_createindex_on_stale_config.js b/jstests/sharding/configsvr_retries_createindex_on_stale_config.js
index 60a20c63197..934636f45d5 100644
--- a/jstests/sharding/configsvr_retries_createindex_on_stale_config.js
+++ b/jstests/sharding/configsvr_retries_createindex_on_stale_config.js
@@ -1,8 +1,5 @@
/**
* Verifies creating the logical sessions collection TTL index retries on stale version errors.
- * @tags: [
- * temporary_catalog_shard_incompatible,
- * ]
*/
(function() {
@@ -17,7 +14,7 @@ let st = new ShardingTest({shards: 2});
// Validate the initial state.
validateSessionsCollection(st.shard0, true, true);
validateSessionsCollection(st.shard1, false, false);
-validateSessionsCollection(st.configRS.getPrimary(), false, false);
+validateSessionsCollection(st.configRS.getPrimary(), TestData.catalogShard, TestData.catalogShard);
// Drop the TTL index on shard0.
assert.commandWorked(st.shard0.getDB("config").system.sessions.dropIndex({lastUse: 1}));
diff --git a/jstests/sharding/convert_to_and_from_sharded.js b/jstests/sharding/convert_to_and_from_sharded.js
index b26e9e94931..12e5eccfe00 100644
--- a/jstests/sharding/convert_to_and_from_sharded.js
+++ b/jstests/sharding/convert_to_and_from_sharded.js
@@ -1,7 +1,7 @@
/**
* Test that a replica set member can process basic CRUD operations after switching from being
* a shardsvr and back to non shardsvr.
- * @tags: [requires_persistence, temporary_catalog_shard_incompatible]
+ * @tags: [requires_persistence]
*/
(function() {
"use strict";
@@ -32,7 +32,8 @@ var checkBasicCRUD = function(coll) {
assert.eq('marker', coll.findOne({_id: 'marker'})._id);
};
-var st = new ShardingTest({shards: {}});
+const numShards = TestData.catalogShard ? 1 : 0;
+var st = new ShardingTest({shards: numShards});
var replShard = new ReplSetTest({nodes: NUM_NODES});
replShard.startSet({verbose: 1});
diff --git a/jstests/sharding/implicit_default_write_concern_add_shard.js b/jstests/sharding/implicit_default_write_concern_add_shard.js
index 2797ea2ec10..155cc9f7fa6 100644
--- a/jstests/sharding/implicit_default_write_concern_add_shard.js
+++ b/jstests/sharding/implicit_default_write_concern_add_shard.js
@@ -1,14 +1,14 @@
/**
* Tests adding shard to sharded cluster will fail if the implicitDefaultWriteConcern is
* w:1 and CWWC is not set.
- *
- * For some reason fails in the check shard filtering metadata hook when shutting down the cluster.
- * @tags: [temporary_catalog_shard_incompatible]
*/
(function() {
"use strict";
+// TODO SERVER-75820: Investigate why a shard node doesn't have metadata at test shutdown.
+TestData.skipCheckShardFilteringMetadata = true;
+
load("jstests/replsets/rslib.js"); // For reconfig and isConfigCommitted.
function addNonArbiterNode(nodeId, rst) {
diff --git a/jstests/sharding/index_and_collection_option_propagation.js b/jstests/sharding/index_and_collection_option_propagation.js
index 425f4c393ff..00b72b7a45c 100644
--- a/jstests/sharding/index_and_collection_option_propagation.js
+++ b/jstests/sharding/index_and_collection_option_propagation.js
@@ -6,8 +6,9 @@
*
* This test verifies this behavior.
*
- * Shuts down shard0, which also shuts down the config server. See if the test can be reworked.
- * @tags: [temporary_catalog_shard_incompatible]
+ * Shuts down shard0, which also shuts down the config server. Tests mongos targeting, which won't
+ * be affected by a catalog shard.
+ * @tags: [catalog_shard_incompatible]
*/
// This test shuts down a shard's node and because of this consistency checking
diff --git a/jstests/sharding/internal_txns/kill_sessions.js b/jstests/sharding/internal_txns/kill_sessions.js
index 3d4ba47addd..1240a573510 100644
--- a/jstests/sharding/internal_txns/kill_sessions.js
+++ b/jstests/sharding/internal_txns/kill_sessions.js
@@ -1,7 +1,7 @@
/*
* Tests running killSessions to kill internal sessions on both mongos and mongod.
*
- * @tags: [requires_fcv_70, uses_transactions, temporary_catalog_shard_incompatible]
+ * @tags: [requires_fcv_70, uses_transactions]
*/
(function() {
'use strict';
@@ -14,7 +14,9 @@ const st = new ShardingTest({
setParameter:
{maxSessions: 1, 'failpoint.skipClusterParameterRefresh': "{'mode':'alwaysOn'}"}
},
- shardOptions: {setParameter: {maxSessions: 1}}
+ // The config server uses a session for internal operations, so raise the limit by 1 for a
+ // catalog shard.
+ shardOptions: {setParameter: {maxSessions: TestData.catalogShard ? 2 : 1}}
});
const shard0Primary = st.rs0.getPrimary();
diff --git a/jstests/sharding/internal_txns/sessions.js b/jstests/sharding/internal_txns/sessions.js
index fe4ffbf1e5e..538d9ffa58b 100644
--- a/jstests/sharding/internal_txns/sessions.js
+++ b/jstests/sharding/internal_txns/sessions.js
@@ -1,7 +1,7 @@
/*
* Tests basic support for internal sessions.
*
- * @tags: [requires_fcv_70, uses_transactions, temporary_catalog_shard_incompatible]
+ * @tags: [requires_fcv_70, uses_transactions]
*/
(function() {
'use strict';
@@ -14,7 +14,9 @@ const st = new ShardingTest({
setParameter:
{maxSessions: 1, 'failpoint.skipClusterParameterRefresh': "{'mode':'alwaysOn'}"}
},
- shardOptions: {setParameter: {maxSessions: 1}}
+ // The config server uses a session for internal operations, so raise the limit by 1 for a
+ // catalog shard.
+ shardOptions: {setParameter: {maxSessions: TestData.catalogShard ? 2 : 1}}
});
const shard0Primary = st.rs0.getPrimary();
@@ -95,6 +97,12 @@ const kConfigSessionNs = "config.system.sessions";
// document).
const sessionUUID = UUID();
+ if (TestData.catalogShard) {
+ // Create the collection first separately, otherwise the session will be used for the
+ // transaction that creates the collection, leading to one extra transaction document.
+ assert.commandWorked(testDB.createCollection(kCollName));
+ }
+
const parentLsid = {id: sessionUUID};
assert.commandWorked(testDB.runCommand(
{insert: kCollName, documents: [{x: 0}], lsid: parentLsid, txnNumber: NumberLong(0)}));
diff --git a/jstests/sharding/key_rotation.js b/jstests/sharding/key_rotation.js
index ee49f7cc7f6..2c3dafebea3 100644
--- a/jstests/sharding/key_rotation.js
+++ b/jstests/sharding/key_rotation.js
@@ -5,8 +5,7 @@
* - manual key rotation is possible by deleting existing keys and restarting the cluster.
*
* Manual key rotation requires restarting a shard, so a persistent storage engine is necessary.
- * Shuts down shard0, which also shuts down the config server. See if the test can be reworked.
- * @tags: [requires_persistence, temporary_catalog_shard_incompatible]
+ * @tags: [requires_persistence]
*/
// This test restarts a shard replica set, potentially changing the primary node, while
diff --git a/jstests/sharding/lagged_config_secondary.js b/jstests/sharding/lagged_config_secondary.js
index 2327769d539..eff7d0a218f 100644
--- a/jstests/sharding/lagged_config_secondary.js
+++ b/jstests/sharding/lagged_config_secondary.js
@@ -1,8 +1,6 @@
/**
* Test that mongos times out when the config server replica set only contains nodes that
* are behind the majority opTime.
- *
- * @tags: [temporary_catalog_shard_incompatible]
*/
load("jstests/libs/write_concern_util.js");
@@ -30,6 +28,7 @@ const failpointParams = {
var st = new ShardingTest({
shards: 1,
+ config: 3,
configReplSetTestOptions: {settings: {chainingAllowed: false}},
other: {
configOptions: failpointParams,
diff --git a/jstests/sharding/libs/resharding_test_fixture.js b/jstests/sharding/libs/resharding_test_fixture.js
index a6f2bf3d836..9657a63db98 100644
--- a/jstests/sharding/libs/resharding_test_fixture.js
+++ b/jstests/sharding/libs/resharding_test_fixture.js
@@ -106,8 +106,8 @@ var ReshardingTest = class {
setup() {
const mongosOptions = {setParameter: {}};
- const configOptions = {setParameter: {}};
- const rsOptions = {
+ let configOptions = {setParameter: {}};
+ let rsOptions = {
setParameter: {
storeFindAndModifyImagesInSideCollection:
this._storeFindAndModifyImagesInSideCollection
@@ -177,6 +177,15 @@ var ReshardingTest = class {
this._maxNumberOfTransactionOperationsInSingleOplogEntry;
}
+ if (this._catalogShard) {
+ // ShardingTest does not currently support deep merging of options, so merge the set
+ // parameters for config and replica sets here.
+ rsOptions.setParameter =
+ Object.merge(rsOptions.setParameter, configOptions.setParameter);
+ configOptions.setParameter =
+ Object.merge(configOptions.setParameter, rsOptions.setParameter);
+ }
+
this._st = new ShardingTest({
mongos: 1,
mongosOptions,
diff --git a/jstests/sharding/listDatabases.js b/jstests/sharding/listDatabases.js
index 7a9358c5a23..88ec308ddab 100644
--- a/jstests/sharding/listDatabases.js
+++ b/jstests/sharding/listDatabases.js
@@ -1,4 +1,3 @@
-// @tags: [temporary_catalog_shard_incompatible]
(function() {
'use strict';
var test = new ShardingTest({shards: 1, mongos: 1, other: {chunkSize: 1}});
@@ -39,9 +38,9 @@ var dbEntryCheck = function(dbEntry, onConfig) {
res = mongos.adminCommand("listDatabases");
dbArray = res.databases;
- dbEntryCheck(getDBSection(dbArray, "blah"), false);
- dbEntryCheck(getDBSection(dbArray, "foo"), false);
- dbEntryCheck(getDBSection(dbArray, "raw"), false);
+ dbEntryCheck(getDBSection(dbArray, "blah"), TestData.catalogShard);
+ dbEntryCheck(getDBSection(dbArray, "foo"), TestData.catalogShard);
+ dbEntryCheck(getDBSection(dbArray, "raw"), TestData.catalogShard);
}
// Local db is never returned.
@@ -74,7 +73,8 @@ var dbEntryCheck = function(dbEntry, onConfig) {
var entry = getDBSection(dbArray, "config");
dbEntryCheck(entry, true);
assert(entry["shards"]);
- assert.eq(Object.keys(entry["shards"]).length, 2);
+ // There's only the "config" shard in catalog shard mode.
+ assert.eq(Object.keys(entry["shards"]).length, TestData.catalogShard ? 1 : 2);
}
// Admin db is only reported on the config shard, never on other shards.
diff --git a/jstests/sharding/merge_all_chunks_on_shard.js b/jstests/sharding/merge_all_chunks_on_shard.js
index 805a656a290..3abf22de35d 100644
--- a/jstests/sharding/merge_all_chunks_on_shard.js
+++ b/jstests/sharding/merge_all_chunks_on_shard.js
@@ -3,7 +3,6 @@
*
* @tags: [
* requires_fcv_70,
- * temporary_catalog_shard_incompatible,
* ]
*/
(function() {
diff --git a/jstests/sharding/merge_with_chunk_migrations.js b/jstests/sharding/merge_with_chunk_migrations.js
index 53b87cbafd2..097f469d298 100644
--- a/jstests/sharding/merge_with_chunk_migrations.js
+++ b/jstests/sharding/merge_with_chunk_migrations.js
@@ -1,9 +1,5 @@
// Tests that the $merge aggregation stage is resilient to chunk migrations in both the source and
// output collection during execution.
-//
-// Fails waiting for a specific aggregation in currentOp, which probably isn't working when we
-// change the cluster topology.
-// @tags: [temporary_catalog_shard_incompatible]
(function() {
'use strict';
@@ -16,10 +12,18 @@ const sourceColl = mongosDB["source"];
const targetColl = mongosDB["target"];
function setAggHang(mode) {
- assert.commandWorked(st.shard0.adminCommand(
- {configureFailPoint: "hangBeforeDocumentSourceCursorLoadBatch", mode: mode}));
- assert.commandWorked(st.shard1.adminCommand(
- {configureFailPoint: "hangBeforeDocumentSourceCursorLoadBatch", mode: mode}));
+ // Match on the output namespace to avoid hanging the sharding metadata refresh aggregation when
+ // shard0 is a catalog shard.
+ assert.commandWorked(st.shard0.adminCommand({
+ configureFailPoint: "hangBeforeDocumentSourceCursorLoadBatch",
+ mode: mode,
+ data: {nss: "merge_with_chunk_migrations.source"}
+ }));
+ assert.commandWorked(st.shard1.adminCommand({
+ configureFailPoint: "hangBeforeDocumentSourceCursorLoadBatch",
+ mode: mode,
+ data: {nss: "merge_with_chunk_migrations.source"}
+ }));
}
function runMergeWithMode(whenMatchedMode, whenNotMatchedMode, shardedColl) {
diff --git a/jstests/sharding/merge_with_drop_shard.js b/jstests/sharding/merge_with_drop_shard.js
index c06f5866b40..ae6c83297f6 100644
--- a/jstests/sharding/merge_with_drop_shard.js
+++ b/jstests/sharding/merge_with_drop_shard.js
@@ -1,7 +1,5 @@
// Tests that the $merge aggregation stage is resilient to drop shard in both the source and
// output collection during execution.
-//
-// @tags: [temporary_catalog_shard_incompatible]
(function() {
'use strict';
@@ -20,13 +18,21 @@ const sourceColl = mongosDB["source"];
const targetColl = mongosDB["target"];
assert.commandWorked(st.s.getDB("admin").runCommand({enableSharding: mongosDB.getName()}));
-st.ensurePrimaryShard(mongosDB.getName(), st.shard1.name);
+st.ensurePrimaryShard(mongosDB.getName(), st.shard0.name);
function setAggHang(mode) {
- assert.commandWorked(st.shard0.adminCommand(
- {configureFailPoint: "hangWhileBuildingDocumentSourceMergeBatch", mode: mode}));
- assert.commandWorked(st.shard1.adminCommand(
- {configureFailPoint: "hangWhileBuildingDocumentSourceMergeBatch", mode: mode}));
+ // Match on the output namespace to avoid hanging the sharding metadata refresh aggregation when
+ // shard0 is a catalog shard.
+ assert.commandWorked(st.shard0.adminCommand({
+ configureFailPoint: "hangWhileBuildingDocumentSourceMergeBatch",
+ mode: mode,
+ data: {nss: targetColl.getFullName()}
+ }));
+ assert.commandWorked(st.shard1.adminCommand({
+ configureFailPoint: "hangWhileBuildingDocumentSourceMergeBatch",
+ mode: mode,
+ data: {nss: targetColl.getFullName()}
+ }));
}
function removeShardAndRefreshRouter(shard) {
@@ -99,9 +105,9 @@ function runMergeWithMode(
});
if (dropShard) {
- removeShardAndRefreshRouter(st.shard0);
+ removeShardAndRefreshRouter(st.shard1);
} else {
- addShard(st.rs0.getURL());
+ addShard(st.rs1.getURL());
}
// Unset the failpoint to unblock the $merge and join with the parallel shell.
setAggHang("off");
diff --git a/jstests/sharding/nonreplicated_uuids_on_shardservers.js b/jstests/sharding/nonreplicated_uuids_on_shardservers.js
index 5e97df80ed7..ac1a875f24a 100644
--- a/jstests/sharding/nonreplicated_uuids_on_shardservers.js
+++ b/jstests/sharding/nonreplicated_uuids_on_shardservers.js
@@ -1,6 +1,6 @@
// SERVER-32255 This test ensures a node started with --shardsvr and added to a replica set receives
// UUIDs upon re-initiation.
-// @tags: [multiversion_incompatible, temporary_catalog_shard_incompatible]
+// @tags: [multiversion_incompatible]
(function() {
"use strict";
load("jstests/libs/check_uuids.js");
@@ -12,7 +12,8 @@ let rs = st.rs0;
mongos.getDB("test").coll.insert({_id: 1, x: 1});
// Add a node with --shardsvr to the replica set.
-let newNode = rs.add({'shardsvr': '', rsConfig: {priority: 0, votes: 0}});
+const clusterRoleOption = TestData.catalogShard ? "configsvr" : "shardsvr";
+let newNode = rs.add({[clusterRoleOption]: '', rsConfig: {priority: 0, votes: 0}});
rs.reInitiate();
rs.awaitSecondaryNodes();
diff --git a/jstests/sharding/query/owning_shard_expression.js b/jstests/sharding/query/owning_shard_expression.js
index fd0707ca584..a735654f86d 100644
--- a/jstests/sharding/query/owning_shard_expression.js
+++ b/jstests/sharding/query/owning_shard_expression.js
@@ -2,7 +2,7 @@
* Tests that $_internalOwningShard expression correctly computes the shard id the document belongs
* to, while executing on mongod.
*
- * @tags: [requires_fcv_63, temporary_catalog_shard_incompatible]
+ * @tags: [requires_fcv_63]
*/
(function() {
"use strict";
@@ -106,7 +106,7 @@ CreateShardedCollectionUtil.shardCollectionWithChunks(destinationColl, {_id: 1},
{min: {_id: 66}, max: {_id: MaxKey}, shard: st.shard2.shardName},
]);
const expectedResult = [
- {shard: `${dbName}-rs0`, indexData: documentOnShard0},
+ {shard: st.shard0.shardName, indexData: documentOnShard0},
{shard: `${dbName}-rs1`, indexData: documentOnShard1},
{shard: `${dbName}-rs2`, indexData: documentOnShard2},
];
diff --git a/jstests/sharding/query/view_rewrite.js b/jstests/sharding/query/view_rewrite.js
index 3c27db5e400..0d2f76af8fd 100644
--- a/jstests/sharding/query/view_rewrite.js
+++ b/jstests/sharding/query/view_rewrite.js
@@ -1,8 +1,6 @@
/**
* Tests that query options are not dropped by mongos when a query against a view is rewritten as an
* aggregation against the underlying collection.
- *
- * @tags: [temporary_catalog_shard_incompatible]
*/
(function() {
"use strict";
@@ -31,7 +29,7 @@ const mongosDB = mongos.getDB("view_rewrite");
const coll = mongosDB.getCollection("coll");
assert.commandWorked(config.adminCommand({enableSharding: mongosDB.getName()}));
-st.ensurePrimaryShard(mongosDB.getName(), "view_rewrite-rs0");
+st.ensurePrimaryShard(mongosDB.getName(), st.shard0.shardName);
const rs0Secondary = st.rs0.getSecondary();
const rs1Primary = st.rs1.getPrimary();
diff --git a/jstests/sharding/reconfig_fails_no_cwwc_set_sharding.js b/jstests/sharding/reconfig_fails_no_cwwc_set_sharding.js
index 15eebaac2c2..55445e5e572 100644
--- a/jstests/sharding/reconfig_fails_no_cwwc_set_sharding.js
+++ b/jstests/sharding/reconfig_fails_no_cwwc_set_sharding.js
@@ -8,13 +8,15 @@
* requires_majority_read_concern,
* requires_persistence,
* requires_fcv_51,
- * temporary_catalog_shard_incompatible,
* ]
*/
(function() {
'use strict';
+// TODO SERVER-75820: Investigate why a shard node doesn't have metadata at test shutdown.
+TestData.skipCheckShardFilteringMetadata = true;
+
load("jstests/replsets/rslib.js"); // For reconfig, isConfigCommitted and
// safeReconfigShouldFail.
diff --git a/jstests/sharding/resharding_change_stream_namespace_filtering.js b/jstests/sharding/resharding_change_stream_namespace_filtering.js
index 9beaec35ffd..b1b31d4dc8a 100644
--- a/jstests/sharding/resharding_change_stream_namespace_filtering.js
+++ b/jstests/sharding/resharding_change_stream_namespace_filtering.js
@@ -4,7 +4,6 @@
* @tags: [
* uses_change_streams,
* requires_fcv_50,
- * temporary_catalog_shard_incompatible,
* ]
*/
@@ -41,7 +40,7 @@ const shardOtherCollCsCursor =
// Drop, recreate, and shard the 'coll_reshard' collection.
assertDropAndRecreateCollection(mongosDB, reshardCollName);
-st.ensurePrimaryShard(dbName, st.rs0.name);
+st.ensurePrimaryShard(dbName, st.shard0.shardName);
st.shardColl(mongosReshardColl, {a: 1}, {a: 50});
for (let i = 0; i < 100; ++i) {
diff --git a/jstests/sharding/resharding_disallow_drop.js b/jstests/sharding/resharding_disallow_drop.js
index dca009de969..c9f7b373a0b 100644
--- a/jstests/sharding/resharding_disallow_drop.js
+++ b/jstests/sharding/resharding_disallow_drop.js
@@ -3,7 +3,6 @@
* @tags: [
* requires_fcv_53,
* featureFlagRecoverableShardsvrReshardCollectionCoordinator,
- * temporary_catalog_shard_incompatible,
* ]
*/
(function() {
@@ -13,7 +12,7 @@ load("jstests/libs/fail_point_util.js");
var st = new ShardingTest({
shards: {rs0: {nodes: 2}},
- config: 1,
+ config: TestData.catalogShard ? 2 : 1,
mongos: 1,
other: {
configOptions: {setParameter: {reshardingCriticalSectionTimeoutMillis: 24 * 60 * 60 * 1000}}
diff --git a/jstests/sharding/resharding_retryable_writes.js b/jstests/sharding/resharding_retryable_writes.js
index e2d1d781ea5..5ff2d8fe7af 100644
--- a/jstests/sharding/resharding_retryable_writes.js
+++ b/jstests/sharding/resharding_retryable_writes.js
@@ -4,9 +4,7 @@
* txnCloners were not started until after waiting for reshardingMinimumOperationDurationMillis to
* elapse.
*
- * The higher minimumOperationDurationMS parameter is not being set on the config server. Correctly
- * waits for the default value, but not the expected higher one.
- * @tags: [uses_atclustertime, temporary_catalog_shard_incompatible]
+ * @tags: [uses_atclustertime]
*/
(function() {
diff --git a/jstests/sharding/resharding_size_estimate.js b/jstests/sharding/resharding_size_estimate.js
index a6c8e3c799b..e8308f49d47 100644
--- a/jstests/sharding/resharding_size_estimate.js
+++ b/jstests/sharding/resharding_size_estimate.js
@@ -3,7 +3,6 @@
*
* @tags: [
* uses_atclustertime,
- * temporary_catalog_shard_incompatible,
* ]
*/
@@ -96,7 +95,7 @@ reshardingTest.withReshardingInBackground(
jsTest.log("Check size estimate on resharding coordinator document:\n" +
tojson(coordinatorDoc));
- const s0Estimate = getShardEstimate(coordinatorDoc, 'shard0');
+ const s0Estimate = getShardEstimate(coordinatorDoc, donorShardNames[0]);
const s1Estimate = getShardEstimate(coordinatorDoc, 'shard1');
assert.gt(s0Estimate.bytesToClone, smallData.length);
diff --git a/jstests/sharding/retryable_writes.js b/jstests/sharding/retryable_writes.js
index e43b440aa05..653526d91b0 100644
--- a/jstests/sharding/retryable_writes.js
+++ b/jstests/sharding/retryable_writes.js
@@ -1,8 +1,6 @@
/**
* Test basic retryable write without errors by checking that the resulting collection after the
* retry is as expected and it does not create additional oplog entries.
- *
- * @tags: [temporary_catalog_shard_incompatible]
*/
(function() {
"use strict";
@@ -38,6 +36,12 @@ function verifyServerStatusChanges(
function runTests(mainConn, priConn) {
var lsid = UUID();
+ if (TestData.catalogShard) {
+ // Creating a collection updates counters on the config server, so do that before getting
+ // the initial stats.
+ assert.commandWorked(mainConn.getDB("test").createCollection("user"));
+ }
+
////////////////////////////////////////////////////////////////////////
// Test insert command
@@ -325,6 +329,12 @@ function runFailpointTests(mainConn, priConn) {
var lsid = UUID();
var testDb = mainConn.getDB('TestDB');
+ if (TestData.catalogShard) {
+ // TODO SERVER-75821: Workaround for crash when executing the fail point while implicitly
+ // creating a collection in a transaction on the config server.
+ assert.commandWorked(testDb.createCollection("user"));
+ }
+
// Test connection close (default behaviour). The connection will get closed, but the
// inserts must succeed
assert.commandWorked(priConn.adminCommand(
diff --git a/jstests/sharding/set_fcv_logging.js b/jstests/sharding/set_fcv_logging.js
index 68b39649406..a3536a46503 100644
--- a/jstests/sharding/set_fcv_logging.js
+++ b/jstests/sharding/set_fcv_logging.js
@@ -5,10 +5,11 @@
* FCV is upgrading or downgrading (6744301)
* FCV upgrade or downgrade success (6744302).
*
+ * TODO SERVER-75391: Enable with catalog shards when catalog shards can downgrade FCV.
* @tags: [
* multiversion_incompatible,
* does_not_support_stepdowns,
- * temporary_catalog_shard_incompatible,
+ * catalog_shard_incompatible,
* ]
*/
diff --git a/jstests/sharding/unique_index_on_shardservers.js b/jstests/sharding/unique_index_on_shardservers.js
index 7443f7aa800..f34894f3c44 100644
--- a/jstests/sharding/unique_index_on_shardservers.js
+++ b/jstests/sharding/unique_index_on_shardservers.js
@@ -1,6 +1,5 @@
// SERVER-34954 This test ensures a node started with --shardsvr and added to a replica set has
// the correct version of unique indexes upon re-initiation.
-// @tags: [temporary_catalog_shard_incompatible]
(function() {
"use strict";
load("jstests/libs/check_unique_indexes.js");
@@ -21,7 +20,12 @@ assert.commandWorked(mongos.getDB("test").coll.createIndex({e: 1}));
assert.commandWorked(mongos.getDB("test").coll.createIndex({f: 1}, {"unique": true}));
// Add a node with --shardsvr to the replica set.
-let newNode = rs.add({'shardsvr': '', rsConfig: {priority: 0, votes: 0}});
+let newNode;
+if (TestData.catalogShard) {
+ newNode = rs.add({'configsvr': '', rsConfig: {priority: 0, votes: 0}});
+} else {
+ newNode = rs.add({'shardsvr': '', rsConfig: {priority: 0, votes: 0}});
+}
rs.reInitiate();
rs.awaitSecondaryNodes();
diff --git a/jstests/sharding/use_rsm_data_for_cs.js b/jstests/sharding/use_rsm_data_for_cs.js
index 79df11a3aad..8bff84db6ee 100644
--- a/jstests/sharding/use_rsm_data_for_cs.js
+++ b/jstests/sharding/use_rsm_data_for_cs.js
@@ -1,4 +1,3 @@
-// @tags: [temporary_catalog_shard_incompatible]
(function() {
'use strict';
@@ -22,7 +21,11 @@ rs.nodes.forEach(function(node) {
});
// add a node to shard rs
-rs.add({'shardsvr': ''});
+if (TestData.catalogShard) {
+ rs.add({'configsvr': ''});
+} else {
+ rs.add({'shardsvr': ''});
+}
rs.reInitiate();
rs.awaitSecondaryNodes();
diff --git a/src/mongo/db/pipeline/document_source_cursor.cpp b/src/mongo/db/pipeline/document_source_cursor.cpp
index f01f2e0d347..ae35d219af5 100644
--- a/src/mongo/db/pipeline/document_source_cursor.cpp
+++ b/src/mongo/db/pipeline/document_source_cursor.cpp
@@ -33,6 +33,7 @@
#include "mongo/db/pipeline/document_source_cursor.h"
#include "mongo/db/catalog/collection.h"
+#include "mongo/db/curop_failpoint_helpers.h"
#include "mongo/db/db_raii.h"
#include "mongo/db/exec/document_value/document.h"
#include "mongo/db/exec/working_set_common.h"
@@ -131,11 +132,15 @@ void DocumentSourceCursor::loadBatch() {
return;
}
- while (MONGO_unlikely(hangBeforeDocumentSourceCursorLoadBatch.shouldFail())) {
- LOGV2(20895,
- "Hanging aggregation due to 'hangBeforeDocumentSourceCursorLoadBatch' failpoint");
- sleepmillis(10);
- }
+ CurOpFailpointHelpers::waitWhileFailPointEnabled(
+ &hangBeforeDocumentSourceCursorLoadBatch,
+ pExpCtx->opCtx,
+ "hangBeforeDocumentSourceCursorLoadBatch",
+ []() {
+ LOGV2(20895,
+ "Hanging aggregation due to 'hangBeforeDocumentSourceCursorLoadBatch' failpoint");
+ },
+ _exec->nss());
PlanExecutor::ExecState state;
Document resultObj;
diff --git a/src/mongo/db/pipeline/document_source_merge.cpp b/src/mongo/db/pipeline/document_source_merge.cpp
index d21c8392324..485ad58300f 100644
--- a/src/mongo/db/pipeline/document_source_merge.cpp
+++ b/src/mongo/db/pipeline/document_source_merge.cpp
@@ -626,7 +626,8 @@ void DocumentSourceMerge::waitWhileFailPointEnabled() {
LOGV2(
20900,
"Hanging aggregation due to 'hangWhileBuildingDocumentSourceMergeBatch' failpoint");
- });
+ },
+ _outputNs);
}
} // namespace mongo