From: Sage Weil Date: Mon, 28 Aug 2017 20:31:59 +0000 (-0400) Subject: mon: make MgrStatMonitor implement PGStatService directly X-Git-Tag: v13.0.1~1005^2~24 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=0027eb2578f7f6563159779725553cfa95057607;p=ceph.git mon: make MgrStatMonitor implement PGStatService directly Avoid the intermediate glue class, simplify. Signed-off-by: Sage Weil --- diff --git a/src/mon/MgrStatMonitor.cc b/src/mon/MgrStatMonitor.cc index 2ed996aa921..2e26015c7cd 100644 --- a/src/mon/MgrStatMonitor.cc +++ b/src/mon/MgrStatMonitor.cc @@ -11,42 +11,6 @@ #include "messages/MStatfsReply.h" #include "messages/MServiceMap.h" -class MgrPGStatService : public PGStatService { - PGMapDigest& digest; -public: - MgrPGStatService(PGMapDigest& d) : digest(d) {} - - const pool_stat_t* get_pool_stat(int64_t poolid) const override { - auto i = digest.pg_pool_sum.find(poolid); - if (i != digest.pg_pool_sum.end()) { - return &i->second; - } - return nullptr; - } - - ceph_statfs get_statfs(OSDMap& osdmap, - boost::optional data_pool) const override { - return digest.get_statfs(osdmap, data_pool); - } - - void print_summary(Formatter *f, ostream *out) const override { - digest.print_summary(f, out); - } - void dump_info(Formatter *f) const override { - digest.dump(f); - } - void dump_fs_stats(stringstream *ss, - Formatter *f, - bool verbose) const override { - digest.dump_fs_stats(ss, f, verbose); - } - void dump_pool_stats(const OSDMap& osdm, stringstream *ss, Formatter *f, - bool verbose) const override { - digest.dump_pool_stats_full(osdm, ss, f, verbose); - } -}; - - #define dout_subsys ceph_subsys_mon #undef dout_prefix #define dout_prefix _prefix(_dout, mon) @@ -57,18 +21,12 @@ static ostream& _prefix(std::ostream *_dout, Monitor *mon) { } MgrStatMonitor::MgrStatMonitor(Monitor *mn, Paxos *p, const string& service_name) - : PaxosService(mn, p, service_name), - pgservice(new MgrPGStatService(digest)) + : PaxosService(mn, p, service_name) { } MgrStatMonitor::~MgrStatMonitor() = default; -PGStatService *MgrStatMonitor::get_pg_stat_service() -{ - return pgservice.get(); -} - void MgrStatMonitor::create_initial() { dout(10) << __func__ << dendl; @@ -187,11 +145,6 @@ void MgrStatMonitor::tick() { } -void MgrStatMonitor::print_summary(Formatter *f, std::ostream *ss) const -{ - pgservice->print_summary(f, ss); -} - bool MgrStatMonitor::preprocess_query(MonOpRequestRef op) { auto m = static_cast(op->get_req()); @@ -265,7 +218,7 @@ bool MgrStatMonitor::preprocess_getpoolstats(MonOpRequestRef op) const auto pool_id = mon->osdmon()->osdmap.lookup_pg_pool_name(pool_name); if (pool_id == -ENOENT) continue; - auto pool_stat = mon->pgservice->get_pool_stat(pool_id); + auto pool_stat = get_pool_stat(pool_id); if (!pool_stat) continue; reply->pool_stats[pool_name] = *pool_stat; @@ -296,8 +249,7 @@ bool MgrStatMonitor::preprocess_statfs(MonOpRequestRef op) << " from " << statfs->get_orig_source() << dendl; epoch_t ver = get_last_committed(); auto reply = new MStatfsReply(statfs->fsid, statfs->get_tid(), ver); - reply->h.st = mon->pgservice->get_statfs(mon->osdmon()->osdmap, - statfs->data_pool); + reply->h.st = get_statfs(mon->osdmon()->osdmap, statfs->data_pool); mon->send_reply(op, reply); return true; } diff --git a/src/mon/MgrStatMonitor.h b/src/mon/MgrStatMonitor.h index 03c2e8cdf2c..8fa68b405a2 100644 --- a/src/mon/MgrStatMonitor.h +++ b/src/mon/MgrStatMonitor.h @@ -11,7 +11,8 @@ class PGStatService; class MgrPGStatService; -class MgrStatMonitor : public PaxosService { +class MgrStatMonitor : public PaxosService, + public PGStatService { // live version version_t version = 0; PGMapDigest digest; @@ -22,8 +23,6 @@ class MgrStatMonitor : public PaxosService { health_check_map_t pending_health_checks; bufferlist pending_service_map_bl; - std::unique_ptr pgservice; - public: MgrStatMonitor(Monitor *mn, Paxos *p, const string& service_name); ~MgrStatMonitor() override; @@ -65,12 +64,39 @@ public: void update_logger(); - void print_summary(Formatter *f, std::ostream *ss) const; - - PGStatService *get_pg_stat_service(); const ServiceMap& get_service_map() { return service_map; } + // PGStatService + const pool_stat_t* get_pool_stat(int64_t poolid) const override { + auto i = digest.pg_pool_sum.find(poolid); + if (i != digest.pg_pool_sum.end()) { + return &i->second; + } + return nullptr; + } + + ceph_statfs get_statfs(OSDMap& osdmap, + boost::optional data_pool) const override { + return digest.get_statfs(osdmap, data_pool); + } + + void print_summary(Formatter *f, ostream *out) const override { + digest.print_summary(f, out); + } + void dump_info(Formatter *f) const override { + digest.dump(f); + } + void dump_fs_stats(stringstream *ss, + Formatter *f, + bool verbose) const override { + digest.dump_fs_stats(ss, f, verbose); + } + void dump_pool_stats(const OSDMap& osdm, stringstream *ss, Formatter *f, + bool verbose) const override { + digest.dump_pool_stats_full(osdm, ss, f, verbose); + } + friend class C_Updated; }; diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index f9273d51ecc..8539d1166fa 100755 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -212,7 +212,7 @@ Monitor::Monitor(CephContext* cct_, string nm, MonitorDBStore *s, leader_mon_commands = local_mon_commands; // note: OSDMonitor may update this based on the luminous flag. - pgservice = mgrstatmon()->get_pg_stat_service(); + pgservice = mgrstatmon(); } Monitor::~Monitor()