From 840836cacfbeaeeb70029d6389a210961dea1574 Mon Sep 17 00:00:00 2001 From: Mohit Agrawal Date: Mon, 10 Jun 2024 10:59:54 +0530 Subject: [PATCH] AsyncMessenger: l_msgr_active_connections numerical anomaly The counter (msgr_active_connections) can be an anomaly in case if the counter is decrese before increase and initial value is 0. It can be happen while the server daemon is blocked on accept_conn and client sends a disconnect request.To avoid the situation increase the counter at first step in add_accept during accepting a request so that the counter would not be 0 during the decrease operation. Fixes: https://tracker.ceph.com/issues/66231 Signed-off-by: Mohit Agrawal (cherry picked from commit b931251b2594eec601d39771b731c14119995181) --- src/msg/async/AsyncMessenger.cc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/msg/async/AsyncMessenger.cc b/src/msg/async/AsyncMessenger.cc index d002d60897c..2e38bd434a8 100644 --- a/src/msg/async/AsyncMessenger.cc +++ b/src/msg/async/AsyncMessenger.cc @@ -611,6 +611,7 @@ void AsyncMessenger::add_accept(Worker *w, ConnectedSocket cli_socket, listen_addr.is_msgr2(), false); conn->accept(std::move(cli_socket), listen_addr, peer_addr); accepting_conns.insert(conn); + w->get_perf_counter()->inc(l_msgr_active_connections); } AsyncConnectionRef AsyncMessenger::create_connect( @@ -865,7 +866,6 @@ int AsyncMessenger::accept_conn(const AsyncConnectionRef& conn) conn->policy.lossy && !conn->policy.register_lossy_clients) { anon_conns.insert(conn); - conn->get_perf_counter()->inc(l_msgr_active_connections); return 0; } auto it = conns.find(*conn->peer_addrs); @@ -884,7 +884,6 @@ int AsyncMessenger::accept_conn(const AsyncConnectionRef& conn) } ldout(cct, 10) << __func__ << " " << conn << " " << *conn->peer_addrs << dendl; conns[*conn->peer_addrs] = conn; - conn->get_perf_counter()->inc(l_msgr_active_connections); accepting_conns.erase(conn); return 0; } -- 2.39.5