summaryrefslogtreecommitdiff
path: root/jstests/replsets/stepdown.js
diff options
context:
space:
mode:
authorKristina <kristina@10gen.com>2011-04-13 14:29:23 -0400
committerKristina <kristina@10gen.com>2011-04-13 14:29:23 -0400
commit81d192dff01d80ac89ef4a021f729eb377d5bc33 (patch)
treebe1d5e45459d3554099d711ee9c06f21fcabd3d5 /jstests/replsets/stepdown.js
parente50a02fa1e3cdb4856c89f1f0144b8f2ab6cd88e (diff)
downloadmongo-81d192dff01d80ac89ef4a021f729eb377d5bc33.tar.gz
allow lower-priority members to be elected during step down
Diffstat (limited to 'jstests/replsets/stepdown.js')
-rw-r--r--jstests/replsets/stepdown.js42
1 files changed, 41 insertions, 1 deletions
diff --git a/jstests/replsets/stepdown.js b/jstests/replsets/stepdown.js
index 12fc1b74437..fb888242963 100644
--- a/jstests/replsets/stepdown.js
+++ b/jstests/replsets/stepdown.js
@@ -10,7 +10,8 @@ master.getDB("foo").bar.insert({x:1});
replTest.awaitReplication();
// lock secondary
-replTest.liveNodes.slaves[0].getDB("admin").runCommand({fsync : 1, lock : 1});
+var locked = replTest.liveNodes.slaves[0];
+locked.getDB("admin").runCommand({fsync : 1, lock : 1});
print("waiting 11 seconds");
@@ -36,4 +37,43 @@ var r2 = master.getDB("admin").runCommand({ismaster : 1});
assert.eq(r2.ismaster, false);
assert.eq(r2.secondary, true);
+print("unlock");
+printjson(locked.getDB("admin").$cmd.sys.unlock.findOne());
+
+print("reset stepped down time");
+master.getDB("admin").runCommand({replSetFreeze:0});
+master = replTest.getMaster();
+
+print("make config with priorities");
+var config = master.getDB("local").system.replset.findOne();
+config.version++;
+config.members[0].priority = 2;
+config.members[1].priority = 1;
+try {
+ master.getDB("admin").runCommand({replSetReconfig : config});
+}
+catch (e) {
+ print(e);
+}
+replTest.awaitReplication();
+
+master = replTest.getMaster();
+var firstMaster = master;
+print("master is now "+firstMaster);
+
+try {
+ printjson(master.getDB("admin").runCommand({replSetStepDown : 100, force : true}));
+}
+catch (e) {
+ print(e);
+}
+
+print("get a master");
+replTest.getMaster();
+
+assert.soon(function() {
+ var secondMaster = replTest.getMaster();
+ return firstMaster+"" != secondMaster+"";
+ }, 'making sure '+firstMaster+' isn\'t still master', 60000);
+
replTest.stopSet();