From d2d38ac858cb6d01b2744d2c0e3b6c0b532470d2 Mon Sep 17 00:00:00 2001 From: Patrick Donnelly Date: Fri, 5 Apr 2019 16:04:14 -0700 Subject: [PATCH] msg/async: dec active connections when marked down Otherwise, tests can't tell when a connection is stopped until it's eventually "lazily" deleted. This should be safe since the perf counter is manipulating an atomic value. Signed-off-by: Patrick Donnelly --- src/msg/async/AsyncMessenger.cc | 1 - src/msg/async/AsyncMessenger.h | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/msg/async/AsyncMessenger.cc b/src/msg/async/AsyncMessenger.cc index 12d516a90f6e9..aad3ce53f3306 100644 --- a/src/msg/async/AsyncMessenger.cc +++ b/src/msg/async/AsyncMessenger.cc @@ -856,7 +856,6 @@ int AsyncMessenger::accept_conn(AsyncConnectionRef conn) // If conn already in, we will return 0 Mutex::Locker l(deleted_lock); if (deleted_conns.erase(existing)) { - existing->get_perf_counter()->dec(l_msgr_active_connections); conns.erase(it); } else if (conn != existing) { return -1; diff --git a/src/msg/async/AsyncMessenger.h b/src/msg/async/AsyncMessenger.h index 7189b59055238..1ce3640db356a 100644 --- a/src/msg/async/AsyncMessenger.h +++ b/src/msg/async/AsyncMessenger.h @@ -314,7 +314,6 @@ private: // lazy delete, see "deleted_conns" Mutex::Locker l(deleted_lock); if (deleted_conns.erase(p->second)) { - p->second->get_perf_counter()->dec(l_msgr_active_connections); conns.erase(p); return NULL; } @@ -403,6 +402,7 @@ public: void unregister_conn(AsyncConnectionRef conn) { Mutex::Locker l(deleted_lock); deleted_conns.insert(conn); + conn->get_perf_counter()->dec(l_msgr_active_connections); if (deleted_conns.size() >= ReapDeadConnectionThreshold) { local_worker->center.dispatch_event_external(reap_handler); -- 2.39.5