summaryrefslogtreecommitdiff
path: root/jstests/slowWeekly
diff options
context:
space:
mode:
authorAaron <aaron@10gen.com>2011-03-22 21:06:54 -0700
committerAaron <aaron@10gen.com>2011-03-22 22:10:42 -0700
commit14ef6d6bc3a3f5950b6d2bb70ac7af92df5c2298 (patch)
tree3f8f63134c357496ca0123825956aa680d6107ae /jstests/slowWeekly
parentfbef3e1b637641389e88ecff10d6632736f55619 (diff)
downloadmongo-14ef6d6bc3a3f5950b6d2bb70ac7af92df5c2298.tar.gz
SERVER-2737 commitIfNeeded() in cappedTruncateAfter()
Diffstat (limited to 'jstests/slowWeekly')
-rw-r--r--jstests/slowWeekly/rollback4.js50
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();