summaryrefslogtreecommitdiff
path: root/jstests/slowWeekly
diff options
context:
space:
mode:
authorAntonin Kral <a.kral@bobek.cz>2011-04-07 07:35:46 +0200
committerAntonin Kral <a.kral@bobek.cz>2011-04-07 07:35:46 +0200
commit8d913e98e8058c6322975a858f884a769735bb43 (patch)
tree52da0129272024f7132594b8227d81ec72f83af1 /jstests/slowWeekly
parent582fc32574a3b158c81e49cb00e6ae59205e66ba (diff)
downloadmongodb-8d913e98e8058c6322975a858f884a769735bb43.tar.gz
Imported Upstream version 1.8.1
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 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();