summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl/oplog_buffer_collection.cpp
diff options
context:
space:
mode:
authorBenety Goh <benety@mongodb.com>2016-09-14 15:10:33 -0400
committerBenety Goh <benety@mongodb.com>2016-09-15 14:18:13 -0400
commit01448cbf54f1dd5b2345e80eb9251cc903457543 (patch)
treef014b2aa9e53a065a16585f2e41a4e017550a08d /src/mongo/db/repl/oplog_buffer_collection.cpp
parentd0d28ea7b664cf1fefbc33fe4751e0a70d29b7fa (diff)
downloadmongo-01448cbf54f1dd5b2345e80eb9251cc903457543.tar.gz
SERVER-25268 OplogBufferCollection enforces order of timestamps in documents passed to pushAllNonBlocking with invariant
Diffstat (limited to 'src/mongo/db/repl/oplog_buffer_collection.cpp')
-rw-r--r--src/mongo/db/repl/oplog_buffer_collection.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/mongo/db/repl/oplog_buffer_collection.cpp b/src/mongo/db/repl/oplog_buffer_collection.cpp
index 7b59bdcd3c6..fe27a6870f3 100644
--- a/src/mongo/db/repl/oplog_buffer_collection.cpp
+++ b/src/mongo/db/repl/oplog_buffer_collection.cpp
@@ -60,6 +60,7 @@ std::pair<BSONObj, Timestamp> OplogBufferCollection::addIdToDocument(const BSONO
invariant(!orig.isEmpty());
BSONObjBuilder bob;
Timestamp ts = orig["ts"].timestamp();
+ invariant(!ts.isNull());
bob.append("_id", ts);
bob.append(kOplogEntryFieldName, orig);
return std::pair<BSONObj, Timestamp>{bob.obj(), ts};
@@ -120,6 +121,7 @@ void OplogBufferCollection::pushAllNonBlocking(OperationContext* txn,
Timestamp ts;
std::transform(begin, end, docsToInsert.begin(), [&ts](const Value& value) {
auto pair = addIdToDocument(value);
+ invariant(ts.isNull() || pair.second > ts);
ts = pair.second;
return pair.first;
});