diff options
author | Scott Hernandez <scotthernandez@gmail.com> | 2016-02-05 15:55:47 -0500 |
---|---|---|
committer | Scott Hernandez <scotthernandez@tart.local> | 2016-02-24 09:55:46 -0500 |
commit | 8178d632b5d446d2c19342cb0de4630d3224b12d (patch) | |
tree | c0d157059fc967c175e161b2a1e29ac2528f30be | |
parent | 4c5dc4a93a963480a58001103e0d1fa837f7362d (diff) | |
download | mongo-8178d632b5d446d2c19342cb0de4630d3224b12d.tar.gz |
SERVER-22495: update optime when journaling is disabled on WT
(cherry picked from commit 874a9cd64e61eb48bf02263c553e1aaa5d4884d0)
-rw-r--r-- | src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.cpp index eda476c4d8f..6f27a7bb6d9 100644 --- a/src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.cpp +++ b/src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.cpp @@ -193,19 +193,20 @@ void WiredTigerSessionCache::waitUntilDurable(bool forceCheckpoint) { ON_BLOCK_EXIT([this, session] { releaseSession(session); }); WT_SESSION* s = session->getSession(); + // This gets the token (OpTime) from the last write, before flushing (either the journal, or a + // checkpoint), and then reports that token (OpTime) as a durable write. + stdx::unique_lock<stdx::mutex> jlk(_journalListenerMutex); + JournalListener::Token token = _journalListener->getToken(); + // Use the journal when available, or a checkpoint otherwise. if (_engine->isDurable()) { - { - stdx::unique_lock<stdx::mutex> lk(_journalListenerMutex); - JournalListener::Token token = _journalListener->getToken(); - invariantWTOK(s->log_flush(s, "sync=on")); - _journalListener->onDurable(token); - } + invariantWTOK(s->log_flush(s, "sync=on")); LOG(4) << "flushed journal"; } else { invariantWTOK(s->checkpoint(s, NULL)); LOG(4) << "created checkpoint"; } + _journalListener->onDurable(token); } void WiredTigerSessionCache::closeAll() { |