]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: refactor session lookup
authorPatrick Donnelly <pdonnell@redhat.com>
Fri, 2 Aug 2019 20:25:49 +0000 (13:25 -0700)
committerPatrick Donnelly <pdonnell@redhat.com>
Fri, 13 Sep 2019 00:42:03 +0000 (17:42 -0700)
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
src/mds/SessionMap.cc

index 23b24ba387f330fa8e90d8b0eec6c48736282b29..a7bb216b6133b58a5471a7957e9183541be8c639 100644 (file)
@@ -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);