timer.add_event_after(stats_period, report_callback);
}
+ send_pgstats();
+}
+
+void MgrClient::send_pgstats()
+{
if (pgstats_cb) {
- MPGStats *m_stats = pgstats_cb();
- session->con->send_message(m_stats);
+ session->con->send_message(pgstats_cb());
}
}
// do any pending reports
send_full_update();
send_failures();
- send_pg_stats(now);
+ if (osdmap->require_osd_release < CEPH_RELEASE_LUMINOUS) {
+ send_pg_stats(now);
+ }
}
map_lock.put_read();
}
service.send_pg_temp();
requeue_failures();
send_failures();
- send_pg_stats(now);
+ if (osdmap->require_osd_release < CEPH_RELEASE_LUMINOUS) {
+ send_pg_stats(now);
+ }
map_lock.put_read();
if (is_active()) {
void OSD::send_pg_stats(const utime_t &now)
{
assert(map_lock.is_locked());
+ assert(osdmap->require_osd_release < CEPH_RELEASE_LUMINOUS);
dout(20) << "send_pg_stats" << dendl;
osd_stat_t cur_stat = service.get_osd_stat();
}
else if (prefix == "flush_pg_stats") {
- flush_pg_stats();
+ if (osdmap->require_osd_release >= CEPH_RELEASE_LUMINOUS) {
+ mgrc.send_pgstats();
+ } else {
+ flush_pg_stats();
+ }
}
else if (prefix == "heap") {
do_restart = true;
}
}
+ if (osdmap->require_osd_release < CEPH_RELEASE_LUMINOUS &&
+ newmap->require_osd_release >= CEPH_RELEASE_LUMINOUS) {
+ dout(10) << __func__ << " require_osd_release reached luminous in "
+ << newmap->get_epoch() << dendl;
+ clear_pg_stat_queue();
+ outstanding_pg_stats.clear();
+ }
osdmap = newmap;
epoch_t up_epoch;
if ((info.stats.state & PG_STATE_UNDERSIZED) == 0)
info.stats.last_fullsized = now;
- publish = true;
+ // do not send pgstat to mon anymore once we are luminous, since mgr takes
+ // care of this by sending MMonMgrReport to mon.
+ publish =
+ osd->osd->get_osdmap()->require_osd_release < CEPH_RELEASE_LUMINOUS;
pg_stats_publish_valid = true;
pg_stats_publish = pre_publish;