From 638fc901a3e8b73d5fa31d563a30343f76f261d8 Mon Sep 17 00:00:00 2001 From: Patrick Donnelly Date: Fri, 2 Aug 2019 13:25:49 -0700 Subject: [PATCH] mds: refactor session lookup Signed-off-by: Patrick Donnelly --- src/mds/SessionMap.cc | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/mds/SessionMap.cc b/src/mds/SessionMap.cc index 23b24ba387f..a7bb216b613 100644 --- a/src/mds/SessionMap.cc +++ b/src/mds/SessionMap.cc @@ -549,16 +549,19 @@ void SessionMapStore::decode_legacy(bufferlist::const_iterator& p) auto p2 = p; Session *s = new Session(ConnectionRef()); s->info.decode(p); - if (session_map.count(s->info.inst.name)) { - // eager client connected too fast! aie. - dout(10) << " already had session for " << s->info.inst.name << ", recovering" << dendl; - entity_name_t n = s->info.inst.name; - delete s; - s = session_map[n]; - p = p2; - s->info.decode(p); - } else { - session_map[s->info.inst.name] = s; + { + auto& name = s->info.inst.name; + auto it = session_map.find(name); + if (it != session_map.end()) { + // eager client connected too fast! aie. + dout(10) << " already had session for " << name << ", recovering" << dendl; + delete s; + s = it->second; + p = p2; + s->info.decode(p); + } else { + it->second = s; + } } s->set_state(Session::STATE_OPEN); s->set_load_avg_decay_rate(decay_rate); -- 2.39.5