summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Bligh <mbligh@mongodb.com>2015-09-14 10:15:49 -0400
committerMartin Bligh <mbligh@mongodb.com>2015-09-14 10:17:15 -0400
commit21c6a574d2cd497089d41d1b418fdfdabf7fc953 (patch)
tree6592961d9b719a665a157f6f5d63044bf5dc1e08
parentd99dbc6b0fe76b9a8835e3464755c8f9d44fb641 (diff)
downloadmongo-21c6a574d2cd497089d41d1b418fdfdabf7fc953.tar.gz
SERVER-18908: Write secondary oplog as a vector
-rw-r--r--src/mongo/db/repl/oplog.cpp20
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());