summaryrefslogtreecommitdiff
path: root/jstests/sharding/query/lookup_mongod_unaware.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/sharding/query/lookup_mongod_unaware.js')
-rw-r--r--jstests/sharding/query/lookup_mongod_unaware.js62
1 files changed, 4 insertions, 58 deletions
diff --git a/jstests/sharding/query/lookup_mongod_unaware.js b/jstests/sharding/query/lookup_mongod_unaware.js
index 35cc9d920cb..41e5f23047b 100644
--- a/jstests/sharding/query/lookup_mongod_unaware.js
+++ b/jstests/sharding/query/lookup_mongod_unaware.js
@@ -6,9 +6,8 @@
* We restart a mongod to cause it to forget that a collection was sharded. When restarted, we
* expect it to still have all the previous data.
*
- * // TODO (SERVER-74380): Remove requires_fcv_70 once SERVER-74380 has been backported to v6.0
* @tags: [
- * requires_persistence,
+ * requires_persistence
* ]
*
*/
@@ -19,7 +18,7 @@ load("jstests/noPassthrough/libs/server_parameter_helpers.js"); // For setParam
load("jstests/libs/discover_topology.js"); // For findDataBearingNodes.
// Restarts the primary shard and ensures that it believes both collections are unsharded.
-function restartPrimaryShard(rs, ...expectedCollections) {
+function restartPrimaryShard(rs, localColl, foreignColl) {
// Returns true if the shard is aware that the collection is sharded.
function hasRoutingInfoForNs(shardConn, coll) {
const res = shardConn.adminCommand({getShardVersion: coll, fullMetadata: true});
@@ -29,11 +28,8 @@ function restartPrimaryShard(rs, ...expectedCollections) {
rs.restart(0);
rs.awaitSecondaryNodes();
-
- expectedCollections.forEach(function(coll) {
- assert(!hasRoutingInfoForNs(rs.getPrimary(), coll.getFullName()),
- 'Shard role not cleared for ' + coll.getFullName());
- });
+ assert(!hasRoutingInfoForNs(rs.getPrimary(), localColl.getFullName()));
+ assert(!hasRoutingInfoForNs(rs.getPrimary(), foreignColl.getFullName()));
}
// Disable checking for index consistency to ensure that the config server doesn't trigger a
@@ -174,55 +170,5 @@ assert.eq(mongos0LocalColl.aggregate(pipeline).toArray(), expectedResults);
restartPrimaryShard(st.rs0, mongos0LocalColl, mongos0ForeignColl);
assert.eq(mongos1LocalColl.aggregate(pipeline).toArray(), expectedResults);
-//
-// Test two-level $lookup with a stale shard handles the shard role recovery case.
-//
-jsTest.log("Running two-level $lookup with a shard that needs recovery");
-
-assert.commandWorked(st.s0.adminCommand({enableSharding: 'D'}));
-st.ensurePrimaryShard('D', st.shard0.shardName);
-
-const D = st.s0.getDB('D');
-
-assert.commandWorked(D.A.insert({Key: 1, Value: 1}));
-assert.commandWorked(D.B.insert({Key: 1, Value: 1}));
-assert.commandWorked(D.C.insert({Key: 1, Value: 1}));
-assert.commandWorked(D.D.insert({Key: 1, Value: 1}));
-
-const aggPipeline = [{
- $lookup: {
- from: 'B',
- localField: 'Key',
- foreignField: 'Value',
- as: 'Joined',
- pipeline: [
- {
- $lookup: {
- from: 'C',
- localField: 'Key',
- foreignField: 'Value',
- as: 'Joined',
- }
- },
- {
- $lookup: {
- from: 'D',
- localField: 'Key',
- foreignField: 'Value',
- as: 'Joined',
- }
- },
- ],
- }
-}];
-
-const resultBefore = D.A.aggregate(aggPipeline).toArray();
-
-// Restarting the shard primary in order for the shard role's cache to be cleared
-restartPrimaryShard(st.rs0, D.A, D.B, D.C, D.D);
-
-const resultAfter = D.A.aggregate(aggPipeline).toArray();
-assert.eq(resultBefore, resultAfter, "Before and after results do not match");
-
st.stop();
})();