]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: fix session leak when waiting on map
authorSage Weil <sage@inktank.com>
Mon, 7 Jul 2014 23:06:21 +0000 (16:06 -0700)
committerSage Weil <sage@inktank.com>
Mon, 7 Jul 2014 23:17:47 +0000 (16:17 -0700)
We don't want to leak the Session if this Session is already waiting on
a map.

Introduced by eb30f88c942d80cbc951d4d0f375479069d15624.

Signed-off-by: Sage Weil <sage@inktank.com>
src/osd/OSD.h

index c52ab8455f814c964a11bc622b475b0d47cdd2f6..6a5b5fb718e88c8ccb168a1c9486098d68248b07 100644 (file)
@@ -1166,8 +1166,10 @@ public:
   }
   void register_session_waiting_on_map(Session *session) {
     Mutex::Locker l(session_waiting_for_map_lock);
-    session->get();
-    session_waiting_for_map.insert(session);
+    if (session_waiting_for_map.count(session) == 0) {
+      session->get();
+      session_waiting_for_map.insert(session);
+    }
   }
   void clear_session_waiting_on_map(Session *session) {
     Mutex::Locker l(session_waiting_for_map_lock);