summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSilvia Surroca <silvia.surroca@mongodb.com>2022-11-03 07:56:05 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-11-04 09:07:17 +0000
commitea4b2d784664f3240b56ad99ba66b33ff4e0330f (patch)
tree0095a40779a61a17d794f8f4dae6733cc727be9b
parentdad0275e755bf005e6730e60c422f716993d6731 (diff)
downloadmongo-ea4b2d784664f3240b56ad99ba66b33ff4e0330f.tar.gz
SERVER-70602 Handle faulty balancerCompliant reporting by waiting for some no-op balancing rounds
(cherry picked from commit 8e7978fb75cad95f864255810c655f62a0a9408d)
-rw-r--r--jstests/concurrency/fsm_workloads/collection_defragmentation.js9
-rw-r--r--jstests/sharding/prefix_shard_key.js1
-rw-r--r--src/mongo/shell/utils_sh.js6
3 files changed, 16 insertions, 0 deletions
diff --git a/jstests/concurrency/fsm_workloads/collection_defragmentation.js b/jstests/concurrency/fsm_workloads/collection_defragmentation.js
index 6d5714caa69..8595d8cdadc 100644
--- a/jstests/concurrency/fsm_workloads/collection_defragmentation.js
+++ b/jstests/concurrency/fsm_workloads/collection_defragmentation.js
@@ -227,6 +227,15 @@ var $config = (function() {
function teardown(db, collName, cluster) {
const mongos = cluster.getDB('config').getMongo();
+
+ cluster.executeOnConfigNodes((db) => {
+ assert.commandWorked(db.adminCommand({
+ configureFailPoint: 'overrideBalanceRoundInterval',
+ mode: 'alwaysOn',
+ data: {intervalMs: 100}
+ }));
+ });
+
for (let i = 0; i < dbCount; i++) {
const dbName = dbPrefix + i;
for (let j = 0; j < collCount; j++) {
diff --git a/jstests/sharding/prefix_shard_key.js b/jstests/sharding/prefix_shard_key.js
index 20b8224b790..78486319784 100644
--- a/jstests/sharding/prefix_shard_key.js
+++ b/jstests/sharding/prefix_shard_key.js
@@ -61,6 +61,7 @@ assert.commandWorked(s.s0.adminCommand({shardCollection: coll.getFullName(), key
assert.eq(2, coll.getIndexes().length);
// make sure balancing happens
+s.startBalancer();
s.awaitBalance(coll.getName(), db.getName());
// Make sure our initial balance cleanup doesn't interfere with later migrations.
diff --git a/src/mongo/shell/utils_sh.js b/src/mongo/shell/utils_sh.js
index a64292a6004..e086bbf8f46 100644
--- a/src/mongo/shell/utils_sh.js
+++ b/src/mongo/shell/utils_sh.js
@@ -351,6 +351,12 @@ sh.awaitCollectionBalance = function(coll, timeout, interval) {
}, 'Timed out waiting for orphans counter to be 0', timeout, interval);
sh.enableBalancing(coll);
+ // (SERVER-70602) Wait for some balancing rounds to avoid balancerCollectionStatus
+ // reporting balancerCompliant too early
+ for (let i = 0; i < 3; ++i) {
+ sh.awaitBalancerRound(timeout, interval);
+ }
+
return assert.commandWorked(sh._adminCommand({balancerCollectionStatus: ns}, true))
.balancerCompliant;
},