From e6918187568dbd01842d8d1d2c808ce16a894239 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 21 Apr 2024 13:54:28 +0200 Subject: Adding upstream version 18.2.2. Signed-off-by: Daniel Baumann --- src/mon/MgrStatMonitor.h | 109 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 src/mon/MgrStatMonitor.h (limited to 'src/mon/MgrStatMonitor.h') diff --git a/src/mon/MgrStatMonitor.h b/src/mon/MgrStatMonitor.h new file mode 100644 index 000000000..8f27a9878 --- /dev/null +++ b/src/mon/MgrStatMonitor.h @@ -0,0 +1,109 @@ +// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- +// vim: ts=8 sw=2 smarttab + +#pragma once + +#include "include/Context.h" +#include "PaxosService.h" +#include "mon/PGMap.h" +#include "mgr/ServiceMap.h" + +class MgrStatMonitor : public PaxosService { + // live version + version_t version = 0; + PGMapDigest digest; + ServiceMap service_map; + std::map progress_events; + + // pending commit + PGMapDigest pending_digest; + health_check_map_t pending_health_checks; + std::map pending_progress_events; + ceph::buffer::list pending_service_map_bl; + +public: + MgrStatMonitor(Monitor &mn, Paxos &p, const std::string& service_name); + ~MgrStatMonitor() override; + + void init() override {} + void on_shutdown() override {} + + void create_initial() override; + void update_from_paxos(bool *need_bootstrap) override; + void create_pending() override; + void encode_pending(MonitorDBStore::TransactionRef t) override; + version_t get_trim_to() const override; + + bool definitely_converted_snapsets() const { + return digest.definitely_converted_snapsets(); + } + + bool preprocess_query(MonOpRequestRef op) override; + bool prepare_update(MonOpRequestRef op) override; + + void encode_full(MonitorDBStore::TransactionRef t) override { } + + bool preprocess_report(MonOpRequestRef op); + bool prepare_report(MonOpRequestRef op); + + bool preprocess_getpoolstats(MonOpRequestRef op); + bool preprocess_statfs(MonOpRequestRef op); + + void check_sub(Subscription *sub); + void check_subs(); + void send_digests(); + + void on_active() override; + void tick() override; + + uint64_t get_last_osd_stat_seq(int osd) { + return digest.get_last_osd_stat_seq(osd); + } + + void update_logger(); + + const ServiceMap& get_service_map() const { + return service_map; + } + + const std::map& get_progress_events() { + return progress_events; + } + + // pg stat access + const pool_stat_t* get_pool_stat(int64_t poolid) const { + auto i = digest.pg_pool_sum.find(poolid); + if (i != digest.pg_pool_sum.end()) { + return &i->second; + } + return nullptr; + } + + const PGMapDigest& get_digest() { + return digest; + } + + ceph_statfs get_statfs(OSDMap& osdmap, + std::optional data_pool) const { + return digest.get_statfs(osdmap, data_pool); + } + + void print_summary(ceph::Formatter *f, std::ostream *out) const { + digest.print_summary(f, out); + } + void dump_info(ceph::Formatter *f) const { + digest.dump(f); + f->dump_object("servicemap", get_service_map()); + f->dump_unsigned("mgrstat_first_committed", get_first_committed()); + f->dump_unsigned("mgrstat_last_committed", get_last_committed()); + } + void dump_cluster_stats(std::stringstream *ss, + ceph::Formatter *f, + bool verbose) const { + digest.dump_cluster_stats(ss, f, verbose); + } + void dump_pool_stats(const OSDMap& osdm, std::stringstream *ss, ceph::Formatter *f, + bool verbose) const { + digest.dump_pool_stats_full(osdm, ss, f, verbose); + } +}; -- cgit v1.2.3