From: Kefu Chai Date: Fri, 25 Apr 2025 15:53:08 +0000 (+0800) Subject: mgr: migrate from boost::variant to std::variant X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=d8141f4302ad7631a3a068e5017e9b018d6cb741;p=ceph.git mgr: migrate from boost::variant to std::variant Replace `boost::variant` with `std::variant` as part of our effort to reduce third-party dependencies in favor of C++ standard library alternatives. Benefits include: - Improved code readability and maintainability - Reduced external dependency surface - More consistent API usage with other components Signed-off-by: Kefu Chai --- diff --git a/src/crimson/osd/osd.cc b/src/crimson/osd/osd.cc index 57227eaa66d6c..0986c7fc7830d 100644 --- a/src/crimson/osd/osd.cc +++ b/src/crimson/osd/osd.cc @@ -192,7 +192,7 @@ seastar::future<> OSD::open_meta_coll() seastar::future<> OSD::set_perf_queries(const ConfigPayload &config_payload) { LOG_PREFIX(OSD::set_perf_queries); const OSDConfigPayload &osd_config_payload = - boost::get(config_payload); + std::get(config_payload); const std::map &queries = osd_config_payload.config; DEBUG("setting {} queries", queries.size()); diff --git a/src/mds/MetricAggregator.cc b/src/mds/MetricAggregator.cc index c916c92d56b7d..0864490b57489 100644 --- a/src/mds/MetricAggregator.cc +++ b/src/mds/MetricAggregator.cc @@ -551,7 +551,7 @@ void MetricAggregator::notify_mdsmap(const MDSMap &mdsmap) { } void MetricAggregator::set_perf_queries(const ConfigPayload &config_payload) { - const MDSConfigPayload &mds_config_payload = boost::get(config_payload); + const MDSConfigPayload &mds_config_payload = std::get(config_payload); const std::map &queries = mds_config_payload.config; dout(10) << ": setting " << queries.size() << " queries" << dendl; diff --git a/src/mgr/DaemonServer.cc b/src/mgr/DaemonServer.cc index f950c01ee72b7..c59051e385c03 100644 --- a/src/mgr/DaemonServer.cc +++ b/src/mgr/DaemonServer.cc @@ -812,7 +812,7 @@ bool DaemonServer::handle_report(const ref_t& m) if (m->metric_report_message) { const MetricReportMessage &message = *m->metric_report_message; - boost::apply_visitor(HandlePayloadVisitor(this), message.payload); + std::visit(HandlePayloadVisitor(this), message.payload); } return true; diff --git a/src/mgr/MDSPerfMetricCollector.cc b/src/mgr/MDSPerfMetricCollector.cc index 62298aba36a01..2d62e3ef355df 100644 --- a/src/mgr/MDSPerfMetricCollector.cc +++ b/src/mgr/MDSPerfMetricCollector.cc @@ -21,7 +21,7 @@ MDSPerfMetricCollector::MDSPerfMetricCollector(MetricListener &listener) } void MDSPerfMetricCollector::process_reports(const MetricPayload &payload) { - const MDSPerfMetricReport &metric_report = boost::get(payload).metric_report; + const MDSPerfMetricReport &metric_report = std::get(payload).metric_report; std::lock_guard locker(lock); process_reports_generic( diff --git a/src/mgr/MetricTypes.h b/src/mgr/MetricTypes.h index 9bfd3fa0e254c..cd6a2de9c21d0 100644 --- a/src/mgr/MetricTypes.h +++ b/src/mgr/MetricTypes.h @@ -4,7 +4,7 @@ #ifndef CEPH_MGR_METRIC_TYPES_H #define CEPH_MGR_METRIC_TYPES_H -#include +#include #include "include/denc.h" #include "include/ceph_features.h" #include "mgr/OSDPerfMetricTypes.h" @@ -89,9 +89,9 @@ WRITE_CLASS_DENC(OSDMetricPayload) WRITE_CLASS_DENC(MDSMetricPayload) WRITE_CLASS_DENC(UnknownMetricPayload) -typedef boost::variant MetricPayload; +typedef std::variant MetricPayload; class EncodeMetricPayloadVisitor : public boost::static_visitor { public: @@ -133,14 +133,14 @@ struct MetricReportMessage { bool should_encode(uint64_t features) const { if (!HAVE_FEATURE(features, SERVER_PACIFIC) && - boost::get(&payload)) { + std::get_if(&payload)) { return false; } return true; } void encode(ceph::buffer::list &bl) const { - boost::apply_visitor(EncodeMetricPayloadVisitor(bl), payload); + std::visit(EncodeMetricPayloadVisitor(bl), payload); } void decode(ceph::buffer::list::const_iterator &iter) { @@ -161,15 +161,15 @@ struct MetricReportMessage { break; } - boost::apply_visitor(DecodeMetricPayloadVisitor(iter), payload); + std::visit(DecodeMetricPayloadVisitor(iter), payload); } void dump(ceph::Formatter *f) const { f->open_object_section("payload"); - if (const OSDMetricPayload* osdPayload = boost::get(&payload)) { + if (const OSDMetricPayload* osdPayload = std::get_if(&payload)) { osdPayload->dump(f); - } else if (const MDSMetricPayload* mdsPayload = boost::get(&payload)) { + } else if (const MDSMetricPayload* mdsPayload = std::get_if(&payload)) { mdsPayload->dump(f); - } else if (const UnknownMetricPayload* unknownPayload = boost::get(&payload)) { + } else if (const UnknownMetricPayload* unknownPayload = std::get_if(&payload)) { unknownPayload->dump(f); } else { ceph_abort(); @@ -255,9 +255,9 @@ WRITE_CLASS_DENC(OSDConfigPayload) WRITE_CLASS_DENC(MDSConfigPayload) WRITE_CLASS_DENC(UnknownConfigPayload) -typedef boost::variant ConfigPayload; +typedef std::variant ConfigPayload; class EncodeConfigPayloadVisitor : public boost::static_visitor { public: @@ -299,14 +299,14 @@ struct MetricConfigMessage { bool should_encode(uint64_t features) const { if (!HAVE_FEATURE(features, SERVER_PACIFIC) && - boost::get(&payload)) { + std::get_if(&payload)) { return false; } return true; } void encode(ceph::buffer::list &bl) const { - boost::apply_visitor(EncodeConfigPayloadVisitor(bl), payload); + std::visit(EncodeConfigPayloadVisitor(bl), payload); } void decode(ceph::buffer::list::const_iterator &iter) { @@ -327,7 +327,7 @@ struct MetricConfigMessage { break; } - boost::apply_visitor(DecodeConfigPayloadVisitor(iter), payload); + std::visit(DecodeConfigPayloadVisitor(iter), payload); } }; diff --git a/src/mgr/MgrClient.cc b/src/mgr/MgrClient.cc index 23843622b386b..cb6cf95ce3486 100644 --- a/src/mgr/MgrClient.cc +++ b/src/mgr/MgrClient.cc @@ -465,7 +465,7 @@ bool MgrClient::handle_mgr_configure(ref_t m) handle_config_payload(m->osd_perf_metric_queries); } else if (m->metric_config_message) { const MetricConfigMessage &message = *m->metric_config_message; - boost::apply_visitor(HandlePayloadVisitor(this), message.payload); + std::visit(HandlePayloadVisitor(this), message.payload); } bool starting = (stats_period == 0) && (m->stats_period != 0); diff --git a/src/mgr/OSDPerfMetricCollector.cc b/src/mgr/OSDPerfMetricCollector.cc index eb548ce70c424..eba49b920c6f5 100644 --- a/src/mgr/OSDPerfMetricCollector.cc +++ b/src/mgr/OSDPerfMetricCollector.cc @@ -21,7 +21,7 @@ OSDPerfMetricCollector::OSDPerfMetricCollector(MetricListener &listener) void OSDPerfMetricCollector::process_reports(const MetricPayload &payload) { const std::map &reports = - boost::get(payload).report; + std::get(payload).report; std::lock_guard locker(lock); process_reports_generic( diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index dc68548c1595d..42eb195e72b06 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -10586,7 +10586,7 @@ void OSD::get_latest_osdmap() // -------------------------------- void OSD::set_perf_queries(const ConfigPayload &config_payload) { - const OSDConfigPayload &osd_config_payload = boost::get(config_payload); + const OSDConfigPayload &osd_config_payload = std::get(config_payload); const std::map &queries = osd_config_payload.config; dout(10) << "setting " << queries.size() << " queries" << dendl;