]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
AsyncMessenger: Add reap_dead to collect unused connection ref
authorHaomai Wang <haomai@xsky.com>
Thu, 7 Jan 2016 17:41:47 +0000 (01:41 +0800)
committerHaomai Wang <haomai@xsky.com>
Wed, 13 Jan 2016 15:24:10 +0000 (23:24 +0800)
Signed-off-by: Haomai Wang <haomai@xsky.com>
src/msg/async/AsyncMessenger.cc
src/msg/async/AsyncMessenger.h

index 258e8dd5dc4a0ae1fef361dcb1fac94b1c2d5e94..d1c6245234437ab101939fe733e5d1e2523007da 100644 (file)
@@ -736,3 +736,21 @@ void AsyncMessenger::learned_addr(const entity_addr_t &peer_addr_for_me)
   }
   lock.Unlock();
 }
+
+int AsyncMessenger::reap_dead(int max)
+{
+  int num;
+  Mutex::Locker l(lock);
+  Mutex::Locker l(deleted_lock);
+
+  while (!deleted_conns.empty() && num < max) {
+    set<AsyncConnectionRef>::iterator it = deleted_conns.begin();
+    AsyncConnectionRef p = *it;
+    ldout(cct, 5) << __func__ << " delete " << p << dendl;
+    conns.erase(p);
+    deleted_conns.erase(it);
+    ++num;
+  }
+
+  return num;
+}
index 59f9f3a2cc60474762ee0c4eac57f978f8cdf96b..5ff1aba98a8a303c4fe18f648a4ce91c502e58f2 100644 (file)
@@ -510,6 +510,16 @@ public:
     Mutex::Locker l(deleted_lock);
     deleted_conns.insert(conn);
   }
+
+  /**
+   * Reap dead connection from `deleted_conns`
+   *
+   * @return the number of dead connections
+   *
+   * See "deleted_conns"
+   */
+  int reap_dead(int max);
+
   /**
    * @} // AsyncMessenger Internals
    */