dout(20) << __func__ << " cleared availability score for pool: " << poolid << dendl;
}
+bool MgrStatMonitor::should_calc_pool_availability()
+{
+ dout(20) << __func__ << dendl;
+ std::scoped_lock l(lock);
+
+ utime_t now = ceph_clock_now();
+ if ((now - pool_availability_last_updated) >= pool_availability_update_interval) {
+ return true;
+ }
+ return false;
+}
+
void MgrStatMonitor::calc_pool_availability()
{
dout(20) << __func__ << dendl;
}
pending_pool_availability = pool_availability;
+ pool_availability_last_updated = now;
}
void MgrStatMonitor::update_from_paxos(bool *need_bootstrap)
mon.osdmon()->notify_new_pg_digest();
// only calculate pool_availability within leader mon
- if (mon.is_leader()) {
+ // and if configured interval has elapsed
+ if (mon.is_leader() && should_calc_pool_availability()) {
calc_pool_availability();
}
}
void calc_pool_availability();
bool enable_availability_tracking = g_conf().get_val<bool>("enable_availability_tracking"); ///< tracking availability score feature
double pool_availability_update_interval = g_conf().get_val<double>("pool_availability_update_interval");
+ utime_t pool_availability_last_updated = ceph_clock_now();
void clear_pool_availability(int64_t poolid);
+ bool should_calc_pool_availability();
void check_sub(Subscription *sub);
void check_subs();