blob: 6221f4cdc58673a1452f27953fb559c8d74ec008 (
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
// Tests whether a Replica Set in a mongos cluster can cause versioning problems
jsTestLog( "Starting sharded cluster..." )
var st = new ShardingTest( { shards : 1, mongos : 2, other : { rs : true } } )
var mongosA = st.s0
var mongosB = st.s1
var rs = st._rs[0].test
var shard = st.shard0
var sadmin = shard.getDB( "admin" )
jsTestLog( "Stepping down replica set member..." )
try{
sadmin.runCommand({ replSetStepDown : 3000, force : true })
}
catch( e ){
// stepdown errors out our conn to the shard
printjson( e )
}
jsTestLog( "Reconnecting..." )
sadmin = new Mongo( st.shard0.host ).getDB("admin")
assert.soon(
function(){
var res = sadmin.runCommand( "replSetGetStatus" );
for ( var i=0; i<res.members.length; i++ ) {
if ( res.members[i].state == 1 )
return true;
}
return false;
}
);
jsTestLog( "New primary elected..." )
coll = mongosA.getCollection( jsTestName() + ".coll" );
start = new Date();
ReplSetTest.awaitRSClientHosts( coll.getMongo(), rs.getPrimary(), { ismaster : true }, rs )
try{
coll.findOne()
}
catch( e ){
printjson( e )
assert( false )
}
end = new Date();
print( "time to work for primary: " + ( ( end.getTime() - start.getTime() ) / 1000 ) + " seconds" );
jsTestLog( "Found data from collection..." )
// now check secondary
try{
sadmin.runCommand({ replSetStepDown : 3000, force : true })
}
catch( e ){
// expected, since all conns closed
printjson( e )
}
sadmin = new Mongo( st.shard0.host ).getDB("admin")
jsTestLog( "Stepped down secondary..." )
other = new Mongo( mongosA.host );
other.setSlaveOk( true );
other = other.getCollection( jsTestName() + ".coll" );
print( "eliot: " + tojson( other.findOne() ) );
st.stop()
|