summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Hernandez <scotthernandez@gmail.com>2016-02-05 15:55:47 -0500
committerScott Hernandez <scotthernandez@gmail.com>2016-02-05 15:55:55 -0500
commit874a9cd64e61eb48bf02263c553e1aaa5d4884d0 (patch)
treee29282809c37c2b8545801d1ebbb56431913865c
parent8f1516a1b43656ab113b0a0babdd42e5222fb731 (diff)
downloadmongo-874a9cd64e61eb48bf02263c553e1aaa5d4884d0.tar.gz
SERVER-22495: update optime when journaling is disabled on WT
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.cpp13
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() {