diff options
author | Benety Goh <benety@mongodb.com> | 2016-09-14 15:10:33 -0400 |
---|---|---|
committer | Benety Goh <benety@mongodb.com> | 2016-09-15 14:18:13 -0400 |
commit | 01448cbf54f1dd5b2345e80eb9251cc903457543 (patch) | |
tree | f014b2aa9e53a065a16585f2e41a4e017550a08d /src/mongo/db/repl/oplog_buffer_collection.cpp | |
parent | d0d28ea7b664cf1fefbc33fe4751e0a70d29b7fa (diff) | |
download | mongo-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.cpp | 2 |
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; }); |