]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/MgrStatMonitor.cc: cleanup pool_availability
authorShraddha Agrawal <shraddha.agrawal000@gmail.com>
Thu, 26 Jun 2025 12:24:36 +0000 (17:54 +0530)
committerShraddha Agrawal <shraddha.agrawal000@gmail.com>
Thu, 26 Jun 2025 12:37:21 +0000 (18:07 +0530)
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 <shraddhaag@ibm.com>
src/mon/MgrStatMonitor.cc

index 5ef4e7de5749ad78c97d46a98c06ef87c1bff86e..4d85a260a82619530aa6601be4ec46e23842456e 100644 (file)
@@ -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()