summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathias Stearn <mathias@10gen.com>2016-11-04 18:29:44 -0400
committerMathias Stearn <mathias@10gen.com>2016-11-07 10:19:57 -0500
commit4720f9651f5e77af6adc9421a2bbf8c610280de7 (patch)
tree9c9d8a62b4f1fe2f1a0381653ecd527925240ecb
parentb20282c5fec7cdedc9ba0d1aaf8439bfcd226753 (diff)
downloadmongo-4720f9651f5e77af6adc9421a2bbf8c610280de7.tar.gz
SERVER-26685 move ephemeral bypass for waitUntilDurable into SessionCache
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_recovery_unit.cpp5
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.cpp6
2 files changed, 6 insertions, 5 deletions
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_recovery_unit.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_recovery_unit.cpp
index 4dccf34cd0e..66fd5e0ddfa 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_recovery_unit.cpp
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_recovery_unit.cpp
@@ -149,11 +149,6 @@ void WiredTigerRecoveryUnit::_ensureSession() {
bool WiredTigerRecoveryUnit::waitUntilDurable() {
invariant(!_inUnitOfWork);
- // 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 (_sessionCache->isEphemeral()) {
- return true;
- }
// _session may be nullptr. We cannot _ensureSession() here as that needs shutdown protection.
_sessionCache->waitUntilDurable(false);
return true;
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.cpp
index 9fc12fb8412..97244d4fd18 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.cpp
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.cpp
@@ -176,6 +176,12 @@ void WiredTigerSessionCache::shuttingDown() {
}
void WiredTigerSessionCache::waitUntilDurable(bool forceCheckpoint) {
+ // 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()) {
+ return;
+ }
+
const int shuttingDown = _shuttingDown.fetchAndAdd(1);
ON_BLOCK_EXIT([this] { _shuttingDown.fetchAndSubtract(1); });