summaryrefslogtreecommitdiff
path: root/src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.cpp')
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.cpp
index 173fb05f7b6..64ef2d146ed 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.cpp
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.cpp
@@ -247,6 +247,13 @@ void WiredTigerSessionCache::waitUntilDurable(OperationContext* opCtx,
// For inMemory storage engines, the data is "as durable as it's going to get".
// That is, a restart is equivalent to a complete node failure.
if (isEphemeral()) {
+ // Update the JournalListener before we return. As far as listeners are concerned, all
+ // writes are as 'durable' as they are ever going to get on an inMemory storage engine.
+ stdx::unique_lock<Latch> lk(_journalListenerMutex, stdx::defer_lock);
+ if (useListener == UseJournalListener::kUpdate) {
+ auto token = _journalListener->getToken(opCtx, lk);
+ _journalListener->onDurable(token);
+ }
return;
}