From: Haomai Wang Date: Thu, 7 Jan 2016 17:41:47 +0000 (+0800) Subject: AsyncMessenger: Add reap_dead to collect unused connection ref X-Git-Tag: v10.0.3~29^2~6 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=da055809ed3712cf144b1bd2850e479d2c5fb926;p=ceph.git AsyncMessenger: Add reap_dead to collect unused connection ref Signed-off-by: Haomai Wang --- diff --git a/src/msg/async/AsyncMessenger.cc b/src/msg/async/AsyncMessenger.cc index 258e8dd5dc4a..d1c624523443 100644 --- a/src/msg/async/AsyncMessenger.cc +++ b/src/msg/async/AsyncMessenger.cc @@ -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::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; +} diff --git a/src/msg/async/AsyncMessenger.h b/src/msg/async/AsyncMessenger.h index 59f9f3a2cc60..5ff1aba98a8a 100644 --- a/src/msg/async/AsyncMessenger.h +++ b/src/msg/async/AsyncMessenger.h @@ -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 */