diff options
author | Randolph Tan <randolph@10gen.com> | 2018-10-22 15:21:18 -0400 |
---|---|---|
committer | Randolph Tan <randolph@10gen.com> | 2018-10-23 15:17:11 -0400 |
commit | d2d29bc986a46943f34ea89455b19af433447428 (patch) | |
tree | 7ee0c6ae644d5e3b7f20a7f8a0f853318abdfdf4 | |
parent | 42f0b7702c6c792afde739d6c5bbebec1ecbcc5d (diff) | |
download | mongo-d2d29bc986a46943f34ea89455b19af433447428.tar.gz |
SERVER-37701 Make SessionUpdateTracker include the uid portion of LogicalSessionId when tracking
(cherry picked from commit df048e23d9149a3607205ae0e69ef11e881c037c)
-rw-r--r-- | src/mongo/db/repl/session_update_tracker.cpp | 6 | ||||
-rw-r--r-- | src/mongo/db/repl/session_update_tracker.h | 3 | ||||
-rw-r--r-- | src/mongo/db/session_catalog.cpp | 2 | ||||
-rw-r--r-- | src/mongo/db/session_catalog.h | 6 |
4 files changed, 7 insertions, 10 deletions
diff --git a/src/mongo/db/repl/session_update_tracker.cpp b/src/mongo/db/repl/session_update_tracker.cpp index 9988a3832b9..1c1da543d52 100644 --- a/src/mongo/db/repl/session_update_tracker.cpp +++ b/src/mongo/db/repl/session_update_tracker.cpp @@ -65,9 +65,9 @@ void SessionUpdateTracker::_updateSessionInfo(const OplogEntry& entry) { const auto& lsid = sessionInfo.getSessionId(); invariant(lsid); - auto iter = _sessionsToUpdate.find(lsid->getId()); + auto iter = _sessionsToUpdate.find(*lsid); if (iter == _sessionsToUpdate.end()) { - _sessionsToUpdate.emplace(lsid->getId(), entry); + _sessionsToUpdate.emplace(*lsid, entry); return; } @@ -125,7 +125,7 @@ std::vector<OplogEntry> SessionUpdateTracker::_flushForQueryPredicate( const BSONObj& queryPredicate) { auto idField = queryPredicate["_id"].Obj(); auto lsid = LogicalSessionId::parse(IDLParserErrorContext("lsidInOplogQuery"), idField); - auto iter = _sessionsToUpdate.find(lsid.getId()); + auto iter = _sessionsToUpdate.find(lsid); if (iter == _sessionsToUpdate.end()) { return {}; diff --git a/src/mongo/db/repl/session_update_tracker.h b/src/mongo/db/repl/session_update_tracker.h index e4288324337..959ab190801 100644 --- a/src/mongo/db/repl/session_update_tracker.h +++ b/src/mongo/db/repl/session_update_tracker.h @@ -35,6 +35,7 @@ #include <vector> #include "mongo/bson/bsonobj.h" +#include "mongo/db/logical_session_id.h" #include "mongo/db/repl/oplog_entry.h" #include "mongo/util/uuid.h" @@ -82,7 +83,7 @@ private: */ void _updateSessionInfo(const OplogEntry& entry); - std::map<UUID, OplogEntry> _sessionsToUpdate; + LogicalSessionIdMap<OplogEntry> _sessionsToUpdate; }; } // namespace repl diff --git a/src/mongo/db/session_catalog.cpp b/src/mongo/db/session_catalog.cpp index 0f0880a5ef2..b657c9ec5e4 100644 --- a/src/mongo/db/session_catalog.cpp +++ b/src/mongo/db/session_catalog.cpp @@ -170,7 +170,7 @@ void SessionCatalog::invalidateSessions(OperationContext* opCtx, !opCtx->getLogicalSessionId()); } - const auto invalidateSessionFn = [&](WithLock, SessionRuntimeInfoMap::iterator it) { + const auto invalidateSessionFn = [&](WithLock, decltype(_txnTable)::iterator it) { auto& sri = it->second; sri->txnState.invalidate(); diff --git a/src/mongo/db/session_catalog.h b/src/mongo/db/session_catalog.h index 3256dd95434..50f5a16e24c 100644 --- a/src/mongo/db/session_catalog.h +++ b/src/mongo/db/session_catalog.h @@ -146,10 +146,6 @@ private: Session txnState; }; - using SessionRuntimeInfoMap = stdx::unordered_map<LogicalSessionId, - std::shared_ptr<SessionRuntimeInfo>, - LogicalSessionIdHash>; - /** * May release and re-acquire it zero or more times before returning. The returned * 'SessionRuntimeInfo' is guaranteed to be linked on the catalog's _txnTable as long as the @@ -164,7 +160,7 @@ private: void _releaseSession(const LogicalSessionId& lsid); stdx::mutex _mutex; - SessionRuntimeInfoMap _txnTable; + LogicalSessionIdMap<std::shared_ptr<SessionRuntimeInfo>> _txnTable; }; /** |