mirror of
https://github.com/mongodb/mongo.git
synced 2024-12-01 09:32:32 +01:00
SERVER-2737 commitIfNeeded() in cappedTruncateAfter()
This commit is contained in:
parent
fbef3e1b63
commit
14ef6d6bc3
@ -319,6 +319,7 @@ namespace mongo {
|
||||
// 'end' has been found and removed, so break.
|
||||
break;
|
||||
}
|
||||
getDur().commitIfNeeded();
|
||||
// 'curr' will point to the newest document in the collection.
|
||||
DiskLoc curr = theCapExtent()->lastRecord;
|
||||
assert( !curr.isNull() );
|
||||
|
50
jstests/slowWeekly/rollback4.js
Normal file
50
jstests/slowWeekly/rollback4.js
Normal file
@ -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();
|
Loading…
Reference in New Issue
Block a user