dout(10) << "handle_query_state" << dendl;
PeeringState::QueryState q(f);
recovery_state.handle_event(q, 0);
+
+ if (is_primary() && is_active()) {
+ f->open_object_section("scrub");
+ f->dump_stream("scrubber.epoch_start") << scrubber.epoch_start;
+ f->dump_bool("scrubber.active", scrubber.active);
+ f->dump_string("scrubber.state", PG::Scrubber::state_string(scrubber.state));
+ f->dump_stream("scrubber.start") << scrubber.start;
+ f->dump_stream("scrubber.end") << scrubber.end;
+ f->dump_stream("scrubber.max_end") << scrubber.max_end;
+ f->dump_stream("scrubber.subset_last_update") << scrubber.subset_last_update;
+ f->dump_bool("scrubber.deep", scrubber.deep);
+ {
+ f->open_array_section("scrubber.waiting_on_whom");
+ for (set<pg_shard_t>::iterator p = scrubber.waiting_on_whom.begin();
+ p != scrubber.waiting_on_whom.end();
+ ++p) {
+ f->dump_stream("shard") << *p;
+ }
+ f->close_section();
+ }
+ f->close_section();
+ }
}
void PG::on_pool_change()
void _update_calc_stats();
void _update_blocked_by();
friend class TestOpsSocketHook;
- void publish_stats_to_osd();
+ void publish_stats_to_osd() override;
bool needs_recovery() const;
bool needs_backfill() const;
q.f->close_section();
}
- {
- q.f->open_object_section("scrub");
- q.f->dump_stream("scrubber.epoch_start") << pg->scrubber.epoch_start;
- q.f->dump_bool("scrubber.active", pg->scrubber.active);
- q.f->dump_string("scrubber.state", PG::Scrubber::state_string(pg->scrubber.state));
- q.f->dump_stream("scrubber.start") << pg->scrubber.start;
- q.f->dump_stream("scrubber.end") << pg->scrubber.end;
- q.f->dump_stream("scrubber.max_end") << pg->scrubber.max_end;
- q.f->dump_stream("scrubber.subset_last_update") << pg->scrubber.subset_last_update;
- q.f->dump_bool("scrubber.deep", pg->scrubber.deep);
- {
- q.f->open_array_section("scrubber.waiting_on_whom");
- for (set<pg_shard_t>::iterator p = pg->scrubber.waiting_on_whom.begin();
- p != pg->scrubber.waiting_on_whom.end();
- ++p) {
- q.f->dump_stream("shard") << *p;
- }
- q.f->close_section();
- }
- q.f->close_section();
- }
-
q.f->close_section();
return forward_event();
}
virtual void queue_want_pg_temp(const vector<int> &wanted) = 0;
virtual void clear_want_pg_temp() = 0;
+ virtual void publish_stats_to_osd() = 0;
virtual void clear_publish_stats() = 0;
virtual void check_recovery_sources(const OSDMapRef& newmap) = 0;