diff options
author | Martin Bligh <mbligh@mongodb.com> | 2015-09-14 10:15:49 -0400 |
---|---|---|
committer | Martin Bligh <mbligh@mongodb.com> | 2015-09-14 10:17:15 -0400 |
commit | 21c6a574d2cd497089d41d1b418fdfdabf7fc953 (patch) | |
tree | 6592961d9b719a665a157f6f5d63044bf5dc1e08 | |
parent | d99dbc6b0fe76b9a8835e3464755c8f9d44fb641 (diff) | |
download | mongo-21c6a574d2cd497089d41d1b418fdfdabf7fc953.tar.gz |
SERVER-18908: Write secondary oplog as a vector
-rw-r--r-- | src/mongo/db/repl/oplog.cpp | 20 |
1 files changed, 5 insertions, 15 deletions
diff --git a/src/mongo/db/repl/oplog.cpp b/src/mongo/db/repl/oplog.cpp index a864fd6809a..b7c3ca23416 100644 --- a/src/mongo/db/repl/oplog.cpp +++ b/src/mongo/db/repl/oplog.cpp @@ -381,21 +381,11 @@ OpTime writeOpsToOplog(OperationContext* txn, const std::deque<BSONObj>& ops) { OldClientContext ctx(txn, rsOplogName, _localDB); WriteUnitOfWork wunit(txn); - for (std::deque<BSONObj>::const_iterator it = ops.begin(); it != ops.end(); ++it) { - const BSONObj& op = *it; - const OpTime optime = fassertStatusOK(28779, OpTime::parseFromBSON(op)); - - checkOplogInsert(_localOplogCollection->insertDocument(txn, op, false)); - - // lastOptime and optime are successive in the log, so it's safe to compare them. - if (!(lastOptime < optime)) { - severe() << "replication oplog stream went back in time. " - "previous timestamp: " << lastOptime << " newest timestamp: " << optime - << ". Op being applied: " << op; - fassertFailedNoTrace(18905); - } - lastOptime = optime; - } + std::vector<BSONObj> opsVect(ops.begin(), ops.end()); + checkOplogInsert( + _localOplogCollection->insertDocuments(txn, opsVect.begin(), opsVect.end(), false)); + lastOptime = + fassertStatusOK(ErrorCodes::InvalidBSON, OpTime::parseFromBSON(opsVect.back())); wunit.commit(); } MONGO_WRITE_CONFLICT_RETRY_LOOP_END(txn, "writeOps", _localOplogCollection->ns().ns()); |