summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Hows <howsdav@gmail.com>2017-04-28 17:38:22 +1000
committerDavid Hows <howsdav@gmail.com>2017-06-15 12:01:35 +1000
commit4a92de28ed34f85e190744bda3930f3cdbc85e75 (patch)
tree3e4b119de8caa6dab83d4be7bc5655424d8f1e65
parent2bda80db0aab45d2ffab9a9c18c4258d498fcceb (diff)
downloadmongo-4a92de28ed34f85e190744bda3930f3cdbc85e75.tar.gz
SERVER-29011 Don't use side sessions during compacts in the WT KV Engine
(cherry picked from commit 584d4a6a25ce56b07f13247b3ce7fe298b4a111e)
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_index.cpp4
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_record_store.cpp4
2 files changed, 4 insertions, 4 deletions
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_index.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_index.cpp
index b2cf00dc0de..50729e013af 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_index.cpp
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_index.cpp
@@ -457,8 +457,8 @@ Status WiredTigerIndex::initAsEmpty(OperationContext* txn) {
Status WiredTigerIndex::compact(OperationContext* txn) {
WiredTigerSessionCache* cache = WiredTigerRecoveryUnit::get(txn)->getSessionCache();
if (!cache->isEphemeral()) {
- UniqueWiredTigerSession session = cache->getSession();
- WT_SESSION* s = session->getSession();
+ WT_SESSION* s = WiredTigerRecoveryUnit::get(txn)->getSession(txn)->getSession();
+ txn->recoveryUnit()->abandonSnapshot();
int ret = s->compact(s, uri().c_str(), "timeout=0");
invariantWTOK(ret);
}
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_record_store.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_record_store.cpp
index c3ecbb0e55b..b181fcdb10d 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_record_store.cpp
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_record_store.cpp
@@ -1524,8 +1524,8 @@ Status WiredTigerRecordStore::compact(OperationContext* txn,
CompactStats* stats) {
WiredTigerSessionCache* cache = WiredTigerRecoveryUnit::get(txn)->getSessionCache();
if (!cache->isEphemeral()) {
- UniqueWiredTigerSession session = cache->getSession();
- WT_SESSION* s = session->getSession();
+ WT_SESSION* s = WiredTigerRecoveryUnit::get(txn)->getSession(txn)->getSession();
+ txn->recoveryUnit()->abandonSnapshot();
int ret = s->compact(s, getURI().c_str(), "timeout=0");
invariantWTOK(ret);
}