diff options
| author | Lucas de Castro Borges <lucas@gnuabordo.com.br> | 2025-02-11 15:07:35 -0300 |
|---|---|---|
| committer | Lucas de Castro Borges <lucas@gnuabordo.com.br> | 2025-02-11 15:07:35 -0300 |
| commit | 4cb8841196d0625dfa3825aa326f071cd27c7b8b (patch) | |
| tree | 1682a647d4463397c119183369ae6f750d5fdcff /jstests/sharding/libs/defragmentation_util.js | |
| parent | aa03c6362cbaa767638e6eed9b031d86dd2643d1 (diff) | |
| parent | 8f0827553e09872941945a093b647a4211a9db7f (diff) | |
Update upstream source from tag 'upstream/6.0.0'master
Update to upstream version '6.0.0'
with Debian dir 5604a80ec1c96ca76f25f40d78e6ef855abec322
Diffstat (limited to 'jstests/sharding/libs/defragmentation_util.js')
| -rw-r--r-- | jstests/sharding/libs/defragmentation_util.js | 26 |
1 files changed, 9 insertions, 17 deletions
diff --git a/jstests/sharding/libs/defragmentation_util.js b/jstests/sharding/libs/defragmentation_util.js index 943f2eb462d..52ac1333ef7 100644 --- a/jstests/sharding/libs/defragmentation_util.js +++ b/jstests/sharding/libs/defragmentation_util.js @@ -21,9 +21,7 @@ var defragmentationUtil = (function() { } createAndDistributeChunks(mongos, ns, numChunks, chunkSpacing); - // Created zones will line up exactly with existing chunks so as not to trigger zone - // violations in the balancer. - createRandomZones(mongos, ns, numZones); + createRandomZones(mongos, ns, numZones, chunkSpacing); fillChunksToRandomSize(mongos, ns, docSizeBytes, maxChunkFillMB); const beginningNumberChunks = findChunksUtil.countChunksForNs(mongos.getDB('config'), ns); @@ -51,18 +49,19 @@ var defragmentationUtil = (function() { } }; - let createRandomZones = function(mongos, ns, numZones) { - let existingChunks = findChunksUtil.findChunksByNs(mongos.getDB('config'), ns); - existingChunks = Array.shuffle(existingChunks.toArray()); - for (let i = 0; i < numZones; i++) { + let createRandomZones = function(mongos, ns, numZones, chunkSpacing) { + for (let i = -Math.floor(numZones / 2); i < Math.ceil(numZones / 2); i++) { let zoneName = "Zone" + i; - let shardForZone = existingChunks[i].shard; + let shardForZone = + findChunksUtil + .findOneChunkByNs(mongos.getDB('config'), ns, {min: {key: i * chunkSpacing}}) + .shard; assert.commandWorked( mongos.adminCommand({addShardToZone: shardForZone, zone: zoneName})); assert.commandWorked(mongos.adminCommand({ updateZoneKeyRange: ns, - min: existingChunks[i].min, - max: existingChunks[i].max, + min: {key: i * chunkSpacing}, + max: {key: i * chunkSpacing + chunkSpacing}, zone: zoneName })); } @@ -203,13 +202,6 @@ var defragmentationUtil = (function() { assert.soon(function() { let balancerStatus = assert.commandWorked(mongos.adminCommand({balancerCollectionStatus: ns})); - - if (balancerStatus.balancerCompliant) { - // As we can't rely on `balancerCompliant` due to orphan counter non atomic update, - // we need to ensure the collection is balanced by some extra checks - sh.awaitCollectionBalance(mongos.getCollection(ns)); - } - return balancerStatus.balancerCompliant || balancerStatus.firstComplianceViolation !== 'defragmentingChunks'; }); |
