diff options
Diffstat (limited to 'src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.h')
-rw-r--r-- | src/mongo/db/storage/wiredtiger/wiredtiger_session_cache.h | 26 |
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: |