diff options
author | Scott Hernandez <scotthernandez@gmail.com> | 2016-02-05 15:55:47 -0500 |
---|---|---|
committer | Scott Hernandez <scotthernandez@gmail.com> | 2016-02-05 15:55:55 -0500 |
commit | 874a9cd64e61eb48bf02263c553e1aaa5d4884d0 (patch) | |
tree | e29282809c37c2b8545801d1ebbb56431913865c | |
parent | 8f1516a1b43656ab113b0a0babdd42e5222fb731 (diff) | |
download | mongo-874a9cd64e61eb48bf02263c553e1aaa5d4884d0.tar.gz |
SERVER-22495: update optime when journaling is disabled on WT
-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() { |