2
* Tests upgrading a cluster where there was a recently active mongos process.
5
load( './jstests/multiVersion/libs/multi_rs.js' )
6
load( './jstests/multiVersion/libs/multi_cluster.js' )
8
jsTest.log( "Starting 2.2 cluster..." );
12
mongosOptions : { binVersion : "2.2" },
13
configOptions : { binVersion : "2.2" },
14
shardOptions : { binVersion : "2.2" },
16
separateConfig : true,
20
var st = new ShardingTest({ shards : 1, mongos : 1, other : options });
22
// Turn balancer off, don't wait
23
st.setBalancer(false);
27
jsTest.log( "Starting v2.0 mongos..." );
29
var mongos20 = MongoRunner.runMongos({ binVersion : "2.0", configdb : st._configDB })
31
jsTest.log( "Waiting for 2.0 ping document..." );
33
var hasPing = function() {
34
return mongos.getCollection("config.mongos").findOne({ _id : RegExp(":" + mongos20.port + "$") }) != null;
37
assert.soon( hasPing );
39
jsTest.log( "Stopping 2.0 mongos..." );
41
MongoRunner.stopMongos(mongos20);
43
jsTest.log( "Upgrade should be unsuccessful..." );
46
var mongosNew = MongoRunner.runMongos({ binVersion : "2.4", configdb : st._configDB, upgrade : "" })
47
assert.eq(null, mongosNew);
49
jsTest.log("Resetting time to zero...");
51
printjson(mongos.getCollection("config.mongos").findOne({ _id : RegExp(":" + mongos20.port + "$") }));
53
mongos.getCollection("config.mongos").update({ _id : RegExp(":" + mongos20.port + "$") },
54
{ $set : { ping : new Date(0) } });
55
assert.eq(null, mongos.getDB("config").getLastError());
57
printjson(mongos.getCollection("config.mongos").findOne({ _id : RegExp(":" + mongos20.port + "$") }));
59
jsTest.log("Trying to restart mongos...");
62
var mongosNew = MongoRunner.runMongos({ binVersion : "2.4", configdb : st._configDB, upgrade : "" })
63
assert.neq(null, mongosNew);
65
jsTest.log("Mongos started!");
67
MongoRunner.stopMongos(mongosNew);