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>
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();
}
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()