summaryrefslogtreecommitdiff
path: root/jstests/sharding/zone_changes_hashed.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/sharding/zone_changes_hashed.js')
-rw-r--r--jstests/sharding/zone_changes_hashed.js26
1 files changed, 21 insertions, 5 deletions
diff --git a/jstests/sharding/zone_changes_hashed.js b/jstests/sharding/zone_changes_hashed.js
index 83265fac92f..5d9323c6f5d 100644
--- a/jstests/sharding/zone_changes_hashed.js
+++ b/jstests/sharding/zone_changes_hashed.js
@@ -1,9 +1,14 @@
/**
* Test that chunks and documents are moved correctly after zone changes.
+ *
+ * * @tags: [
+ * requires_fcv_60,
+ * ]
*/
(function() {
'use strict';
+load("jstests/libs/feature_flag_util.js");
load("jstests/sharding/libs/zone_changes_util.js");
load("jstests/sharding/libs/find_chunks_util.js");
@@ -47,7 +52,7 @@ function findHighestChunkBounds(chunkBounds) {
return highestBounds;
}
-let st = new ShardingTest({shards: 3});
+const st = new ShardingTest({shards: 3, other: {chunkSize: 1, enableAutoSplitter: false}});
let primaryShard = st.shard0;
let dbName = "test";
let testDB = st.s.getDB(dbName);
@@ -56,8 +61,8 @@ let coll = testDB.hashed;
let ns = coll.getFullName();
let shardKey = {x: "hashed"};
-assert.commandWorked(st.s.adminCommand({enableSharding: dbName}));
-st.ensurePrimaryShard(dbName, primaryShard.shardName);
+assert.commandWorked(
+ st.s.adminCommand({enableSharding: dbName, primaryShard: primaryShard.shardName}));
jsTest.log(
"Shard the collection. The command creates two chunks on each of the shards by default.");
@@ -66,7 +71,15 @@ let chunkDocs = findChunksUtil.findChunksByNs(configDB, ns).sort({min: 1}).toArr
let shardChunkBounds = chunkBoundsUtil.findShardChunkBounds(chunkDocs);
jsTest.log("Insert docs (one for each chunk) and check that they end up on the right shards.");
-let docs = [{x: -25}, {x: -18}, {x: -5}, {x: -1}, {x: 5}, {x: 10}];
+const bigString = 'X'.repeat(1024 * 1024); // 1MB
+let docs = [
+ {x: -25, s: bigString},
+ {x: -18, s: bigString},
+ {x: -5, s: bigString},
+ {x: -1, s: bigString},
+ {x: 5, s: bigString},
+ {x: 10, s: bigString}
+];
assert.commandWorked(coll.insert(docs));
let docChunkBounds = [];
@@ -126,7 +139,10 @@ shardTags = {
};
assertShardTags(configDB, shardTags);
-let numChunksToMove = zoneChunkBounds["zoneB"].length / 2;
+const balanceAccordingToDataSize = FeatureFlagUtil.isEnabled(
+ st.configRS.getPrimary().getDB('admin'), "BalanceAccordingToDataSize");
+let numChunksToMove = balanceAccordingToDataSize ? zoneChunkBounds["zoneB"].length - 1
+ : zoneChunkBounds["zoneB"].length / 2;
runBalancer(st, numChunksToMove);
shardChunkBounds = {
[st.shard0.shardName]: zoneChunkBounds["zoneB"].slice(0, numChunksToMove),