invalidate_stats = true;
}
info.stats.stats_invalid |= invalidate_stats;
+ increment_stats_invalidations_counter(invalidate_stats);
peer_info[from] = oinfo;
psdout(10) << " peer osd." << from << " now " << oinfo
<< " " << omissing << dendl;
child->info.last_epoch_started = info.last_epoch_started;
child->info.last_interval_started = info.last_interval_started;
+ increment_stats_invalidations_counter(info.stats.stats_invalid);
+ increment_stats_invalidations_counter(child->info.stats.stats_invalid);
+
// There can't be recovery/backfill going on now
int primary, up_primary;
vector<int> newup, newacting;
}
}
+void PeeringState::increment_stats_invalidations_counter(bool invalidation_state) {
+ if (invalidation_state) {
+ pl->get_peering_perf().inc(rs_stats_invalidated);
+ }
+}
+
void PeeringState::init(
int role,
const vector<int>& newup, int new_up_primary,
void PeeringState::update_stats(
std::function<bool(pg_history_t &, pg_stat_t &)> f,
ObjectStore::Transaction *t) {
+ bool previous_stats_invalidation = info.stats.stats_invalid;
if (f(info.history, info.stats)) {
pl->publish_stats_to_osd();
}
+ if (previous_stats_invalidation != info.stats.stats_invalid) {
+ increment_stats_invalidations_counter(info.stats.stats_invalid);
+ }
+
if (t) {
dirty_info = true;
write_if_dirty(*t);
info.last_complete = info.last_update;
}
info.stats.stats_invalid = info.stats.stats_invalid || invalidate_stats;
-
+ increment_stats_invalidations_counter(invalidate_stats);
psdout(20) << "trim_to bool = " << bool(trim_to)
<< " trim_to = " << (trim_to ? *trim_to : eversion_t()) << dendl;
if (trim_to) {
dpp);
pinfo.last_update = info.last_update;
pinfo.stats.stats_invalid = pinfo.stats.stats_invalid || invalidate_stats;
+ increment_stats_invalidations_counter(invalidate_stats);
rebuild_missing = rebuild_missing || invalidate_stats;
}
rs_perf.add_time_avg(rs_getmissing_latency, "getmissing_latency", "Getmissing recovery state latency");
rs_perf.add_time_avg(rs_waitupthru_latency, "waitupthru_latency", "Waitupthru recovery state latency");
rs_perf.add_time_avg(rs_notrecovering_latency, "notrecovering_latency", "Notrecovering recovery state latency");
+ rs_perf.add_u64_counter(rs_stats_invalidated, "stats_invalidated", "Number of times pg stats received invalidations");
return rs_perf.create_perf_counters();
}