summaryrefslogtreecommitdiff
path: root/jstests/sharding/fair_balancer_round.js
blob: 6b477efac782b7e8d4ee66d4a885c985ae68611d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//
// Tests that a balancer round loads newly sharded collection data
//

var options = {mongosOptions: {verbose: 1}};

var st = new ShardingTest({shards: 2, mongos: 2, other: options});

// Stop balancer initially
st.stopBalancer();

var mongos = st.s0;
var staleMongos = st.s1;
var coll = mongos.getCollection("foo.bar");

// Shard collection through first mongos
assert(mongos.adminCommand({enableSharding: coll.getDB() + ""}).ok);
st.ensurePrimaryShard(coll.getDB().getName(), 'shard0001');
assert(mongos.adminCommand({shardCollection: coll + "", key: {_id: 1}}).ok);

// Create a bunch of chunks
var numSplits = 20;
for (var i = 0; i < numSplits; i++) {
    assert(mongos.adminCommand({split: coll + "", middle: {_id: i}}).ok);
}

// Stop the first mongos who setup the cluster.
st.stopMongos(0);

// Start balancer, which lets the stale mongos balance
assert.writeOK(
    staleMongos.getDB("config").settings.update({_id: "balancer"}, {$set: {stopped: false}}, true));

// Make sure we eventually start moving chunks
assert.soon(function() {
    return staleMongos.getCollection("config.changelog").count({what: /moveChunk/}) > 0;
}, "no balance happened", 5 * 60 * 1000);

jsTest.log("DONE!");

st.stop();