diff options
author | Aaron <aaron@10gen.com> | 2011-03-22 21:06:54 -0700 |
---|---|---|
committer | Aaron <aaron@10gen.com> | 2011-03-22 22:10:42 -0700 |
commit | 14ef6d6bc3a3f5950b6d2bb70ac7af92df5c2298 (patch) | |
tree | 3f8f63134c357496ca0123825956aa680d6107ae /jstests/slowWeekly | |
parent | fbef3e1b637641389e88ecff10d6632736f55619 (diff) | |
download | mongo-14ef6d6bc3a3f5950b6d2bb70ac7af92df5c2298.tar.gz |
SERVER-2737 commitIfNeeded() in cappedTruncateAfter()
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 00000000000..968980deec4 --- /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(); |