From: Shraddha Agrawal Date: Thu, 26 Jun 2025 12:24:36 +0000 (+0530) Subject: mon/MgrStatMonitor.cc: cleanup pool_availability X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=da4f0cfc18b7ecd4d0141217bb0dee13d6263db0;p=ceph.git mon/MgrStatMonitor.cc: cleanup pool_availability This commit does the following: 1. In `calc_pool_availability()`, instead of swapping pool_availability and pending_pool_availability (which resulted in pool_availability storing old object value and not the latest object values), we now simply update pending_pool_availability to the newest calculated values. 2. `calc_pool_availability` now updates pool_availability only in leader mon. For peon, it will simply exit early. Fixes: https://tracker.ceph.com/issues/71857 Signed-off-by: Shraddha Agrawal --- diff --git a/src/mon/MgrStatMonitor.cc b/src/mon/MgrStatMonitor.cc index 5ef4e7de574..4d85a260a82 100644 --- a/src/mon/MgrStatMonitor.cc +++ b/src/mon/MgrStatMonitor.cc @@ -205,7 +205,7 @@ void MgrStatMonitor::calc_pool_availability() avail.last_uptime = reset_availability_last_uptime_downtime_val.value(); } } - pending_pool_availability.swap(pool_availability); + pending_pool_availability = pool_availability; reset_availability_last_uptime_downtime_val.reset(); } @@ -242,7 +242,11 @@ void MgrStatMonitor::update_from_paxos(bool *need_bootstrap) check_subs(); update_logger(); mon.osdmon()->notify_new_pg_digest(); - calc_pool_availability(); + + // only calculate pool_availability within leader mon + if (mon.is_leader()) { + calc_pool_availability(); + } } void MgrStatMonitor::update_logger()