summaryrefslogtreecommitdiff
path: root/src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.h')
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.h26
1 files changed, 23 insertions, 3 deletions
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.h b/src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.h
index 7a87cef036e..affbf28fe55 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.h
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.h
@@ -156,6 +156,14 @@ public:
*/
static const uint64_t kMetadataTableId = 0;
+ void setIdleExpireTime(Date_t idleExpireTime) {
+ _idleExpireTime = idleExpireTime;
+ }
+
+ Date_t getIdleExpireTime() const {
+ return _idleExpireTime;
+ }
+
private:
friend class WiredTigerSessionCache;
@@ -180,6 +188,7 @@ private:
uint64_t _cursorGen;
int _cursorsOut;
bool _dropQueuedIdentsAtSessionEnd = true;
+ Date_t _idleExpireTime;
};
/**
@@ -189,7 +198,7 @@ private:
class WiredTigerSessionCache {
public:
WiredTigerSessionCache(WiredTigerKVEngine* engine);
- WiredTigerSessionCache(WT_CONNECTION* conn);
+ WiredTigerSessionCache(WT_CONNECTION* conn, ClockSource* cs);
~WiredTigerSessionCache();
/**
@@ -213,6 +222,16 @@ public:
std::unique_ptr<WiredTigerSession, WiredTigerSessionDeleter> getSession();
/**
+ * Get a count of idle sessions in the session cache.
+ */
+ size_t getIdleSessionsCount();
+
+ /**
+ * Closes all cached sessions whose idle expiration time has been reached.
+ */
+ void closeExpiredIdleSessions(int64_t idleTimeMillis);
+
+ /**
* Free all cached sessions and ensures that previously acquired sessions will be freed on
* release.
*/
@@ -286,8 +305,9 @@ public:
}
private:
- WiredTigerKVEngine* _engine; // not owned, might be NULL
- WT_CONNECTION* _conn; // not owned
+ WiredTigerKVEngine* _engine; // not owned, might be NULL
+ WT_CONNECTION* _conn; // not owned
+ ClockSource* const _clockSource; // not owned
WiredTigerSnapshotManager _snapshotManager;
// Used as follows: