diff options
author | Antonin Kral <a.kral@bobek.cz> | 2011-04-07 07:35:46 +0200 |
---|---|---|
committer | Antonin Kral <a.kral@bobek.cz> | 2011-04-07 07:35:46 +0200 |
commit | 8d913e98e8058c6322975a858f884a769735bb43 (patch) | |
tree | 52da0129272024f7132594b8227d81ec72f83af1 /jstests/slowWeekly | |
parent | 582fc32574a3b158c81e49cb00e6ae59205e66ba (diff) | |
download | mongodb-8d913e98e8058c6322975a858f884a769735bb43.tar.gz |
Imported Upstream version 1.8.1
Diffstat (limited to 'jstests/slowWeekly')
-rw-r--r-- | jstests/slowWeekly/rollback4.js | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/jstests/slowWeekly/rollback4.js b/jstests/slowWeekly/rollback4.js new file mode 100644 index 0000000..968980d --- /dev/null +++ b/jstests/slowWeekly/rollback4.js @@ -0,0 +1,50 @@ +// Test a large rollback SERVER-2737 + +var replTest = new ReplSetTest({ name: 'unicomplex', nodes: 3, oplogSize: 2000 }); +var nodes = replTest.nodeList(); + +var conns = replTest.startSet(); +var r = replTest.initiate({ "_id": "unicomplex", + "members": [ + { "_id": 0, "host": nodes[0] }, + { "_id": 1, "host": nodes[1] }, + { "_id": 2, "host": nodes[2], arbiterOnly: true}] + }); + +// Make sure we have a master +var master = replTest.getMaster(); +b_conn = conns[1]; +b_conn.setSlaveOk(); +B = b_conn.getDB("admin"); + +// Make sure we have an arbiter +assert.soon(function () { + res = conns[2].getDB("admin").runCommand({ replSetGetStatus: 1 }); + return res.myState == 7; + }, "Arbiter failed to initialize."); + +// Wait for initial replication +replTest.awaitReplication(); + +// Insert into master +var big = { b:new Array( 1000 ).toString() }; +for( var i = 0; i < 1000000; ++i ) { + if ( i % 10000 == 0 ) { + print( i ); + } + master.getDB( 'db' ).c.insert( big ); +} + +// Stop master +replTest.stop( 0 ); + +// Wait for slave to take over +assert.soon(function () { return B.isMaster().ismaster; }); +master = replTest.getMaster(); + +// Save to new master, forcing rollback of old master +master.getDB( 'db' ).c.save( big ); + +// Restart old master +replTest.restart( 0 ); +replTest.awaitReplication(); |