diff options
author | Dan Pasette <dan@10gen.com> | 2014-02-26 17:22:07 -0800 |
---|---|---|
committer | Dan Pasette <dan@mongodb.com> | 2014-03-05 08:42:18 -0500 |
commit | a2ebcca174d9df0c1454119057911ef7eddfd0ec (patch) | |
tree | 61cd0ff138a80fb70e02cfb4e3a8384a13a074f6 /jstests/replsets/maxSyncSourceLagSecs.js | |
parent | 52fbcfdd6d40b5d53210a11fa3e2596a34c84fe7 (diff) | |
download | mongo-a2ebcca174d9df0c1454119057911ef7eddfd0ec.tar.gz |
SERVER-12901 make maxSyncSourceLagSecs configurable
Diffstat (limited to 'jstests/replsets/maxSyncSourceLagSecs.js')
-rw-r--r-- | jstests/replsets/maxSyncSourceLagSecs.js | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/jstests/replsets/maxSyncSourceLagSecs.js b/jstests/replsets/maxSyncSourceLagSecs.js new file mode 100644 index 00000000000..748e1e281f3 --- /dev/null +++ b/jstests/replsets/maxSyncSourceLagSecs.js @@ -0,0 +1,39 @@ +// Test that setting maxSyncSourceLagSecs causes the set to change sync target +var replTest = new ReplSetTest({ nodes: 3, oplogSize: 5, + nodeOptions: {setParameter: "maxSyncSourceLagSecs=1"}}); +replTest.startSet(); +replTest.initiate(); + +var master = replTest.getMaster(); +var docNum = 100; +for (i=0; i<docNum; i++) { + master.getDB("foo").bar.save({a: i}); +} +replTest.awaitReplication(); +var slaves = replTest.liveNodes.slaves; + +jsTestLog("Setting sync target of slave 2 to slave 1"); +assert.commandWorked(slaves[1].getDB("admin").runCommand({replSetSyncFrom: slaves[0].name})); +assert.soon(function() { + return (replTest.status().members[2].syncingTo == slaves[0].name); + }, "sync target not changed to other slave"); +printjson(replTest.status); + +jsTestLog("Lock slave 1 and add some docs. Should force sync target for slave 2 to change to primary"); +assert.commandWorked(slaves[0].getDB("admin").runCommand({fsync:1, lock: 1})); +var docNum = 100; +for (var i=0; i<docNum; i++) { + master.getDB("foo").bar.save({a: i}); +} + +assert.soon(function() { + return (replTest.status().members[2].syncingTo == master.name); + }, "sync target not changed back to primary"); +printjson(replTest.status); + +assert.soon(function() { + return (slaves[1].getDB("foo").bar.count() == 200); + }, "slave should have caught up after syncing to primary."); + +assert.commandWorked(slaves[0].getDB("admin").$cmd.sys.unlock.findOne()); +replTest.stopSet(); |