]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr: migrate from boost::variant to std::variant 62977/head
authorKefu Chai <tchaikov@gmail.com>
Fri, 25 Apr 2025 15:53:08 +0000 (23:53 +0800)
committerKefu Chai <tchaikov@gmail.com>
Sun, 27 Apr 2025 12:09:45 +0000 (20:09 +0800)
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 <tchaikov@gmail.com>
src/crimson/osd/osd.cc
src/mds/MetricAggregator.cc
src/mgr/DaemonServer.cc
src/mgr/MDSPerfMetricCollector.cc
src/mgr/MetricTypes.h
src/mgr/MgrClient.cc
src/mgr/OSDPerfMetricCollector.cc
src/osd/OSD.cc

index 57227eaa66d6c62343585cde461ebd85bcf2c3ad..0986c7fc7830d405f281ad375d029981b64a3189 100644 (file)
@@ -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<OSDConfigPayload>(config_payload);
+    std::get<OSDConfigPayload>(config_payload);
   const std::map<OSDPerfMetricQuery, OSDPerfMetricLimits> &queries =
     osd_config_payload.config;
   DEBUG("setting {} queries", queries.size());
index c916c92d56b7d635fc8c5905371a6fc544a3e587..0864490b57489667e18ceb66d479309f046c338e 100644 (file)
@@ -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<MDSConfigPayload>(config_payload);
+  const MDSConfigPayload &mds_config_payload = std::get<MDSConfigPayload>(config_payload);
   const std::map<MDSPerfMetricQuery, MDSPerfMetricLimits> &queries = mds_config_payload.config;
 
   dout(10) << ": setting " << queries.size() << " queries" << dendl;
index f950c01ee72b77805cb6473549fd99081f81c064..c59051e385c037c960ce9b25389050fd294cdd02 100644 (file)
@@ -812,7 +812,7 @@ bool DaemonServer::handle_report(const ref_t<MMgrReport>& 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;
index 62298aba36a01b00d859327ad05c8332240f56ec..2d62e3ef355df5c885c7b063c77d6dc12bbd54bd 100644 (file)
@@ -21,7 +21,7 @@ MDSPerfMetricCollector::MDSPerfMetricCollector(MetricListener &listener)
 }
 
 void MDSPerfMetricCollector::process_reports(const MetricPayload &payload) {
-  const MDSPerfMetricReport &metric_report = boost::get<MDSMetricPayload>(payload).metric_report;
+  const MDSPerfMetricReport &metric_report = std::get<MDSMetricPayload>(payload).metric_report;
 
   std::lock_guard locker(lock);
   process_reports_generic(
index 9bfd3fa0e254c952064d4dda40e0a2b1682a296b..cd6a2de9c21d09244b8c8dc85ee67ab8b21a0559 100644 (file)
@@ -4,7 +4,7 @@
 #ifndef CEPH_MGR_METRIC_TYPES_H
 #define CEPH_MGR_METRIC_TYPES_H
 
-#include <boost/variant.hpp>
+#include <variant>
 #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<OSDMetricPayload,
-                       MDSMetricPayload,
-                       UnknownMetricPayload> MetricPayload;
+typedef std::variant<OSDMetricPayload,
+                    MDSMetricPayload,
+                    UnknownMetricPayload> MetricPayload;
 
 class EncodeMetricPayloadVisitor : public boost::static_visitor<void> {
 public:
@@ -133,14 +133,14 @@ struct MetricReportMessage {
 
   bool should_encode(uint64_t features) const {
     if (!HAVE_FEATURE(features, SERVER_PACIFIC) &&
-       boost::get<MDSMetricPayload>(&payload)) {
+       std::get_if<MDSMetricPayload>(&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<OSDMetricPayload>(&payload)) {
+    if (const OSDMetricPayload* osdPayload = std::get_if<OSDMetricPayload>(&payload)) {
       osdPayload->dump(f);
-    } else if (const MDSMetricPayload* mdsPayload = boost::get<MDSMetricPayload>(&payload)) {
+    } else if (const MDSMetricPayload* mdsPayload = std::get_if<MDSMetricPayload>(&payload)) {
       mdsPayload->dump(f);
-    } else if (const UnknownMetricPayload* unknownPayload = boost::get<UnknownMetricPayload>(&payload)) {
+    } else if (const UnknownMetricPayload* unknownPayload = std::get_if<UnknownMetricPayload>(&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<OSDConfigPayload,
-                       MDSConfigPayload,
-                       UnknownConfigPayload> ConfigPayload;
+typedef std::variant<OSDConfigPayload,
+                    MDSConfigPayload,
+                    UnknownConfigPayload> ConfigPayload;
 
 class EncodeConfigPayloadVisitor : public boost::static_visitor<void> {
 public:
@@ -299,14 +299,14 @@ struct MetricConfigMessage {
 
   bool should_encode(uint64_t features) const {
     if (!HAVE_FEATURE(features, SERVER_PACIFIC) &&
-       boost::get<MDSConfigPayload>(&payload)) {
+       std::get_if<MDSConfigPayload>(&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);
   }
 };
 
index 23843622b386be4599e69942703e06bcde241c0a..cb6cf95ce3486d64d9ba3d61c936b8ae1e926843 100644 (file)
@@ -465,7 +465,7 @@ bool MgrClient::handle_mgr_configure(ref_t<MMgrConfigure> 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);
index eb548ce70c42470d2696c0fd5046442daaae2335..eba49b920c6f5a9ec604465a25bb06d0c4ec1872 100644 (file)
@@ -21,7 +21,7 @@ OSDPerfMetricCollector::OSDPerfMetricCollector(MetricListener &listener)
 
 void OSDPerfMetricCollector::process_reports(const MetricPayload &payload) {
   const std::map<OSDPerfMetricQuery, OSDPerfMetricReport> &reports =
-    boost::get<OSDMetricPayload>(payload).report;
+    std::get<OSDMetricPayload>(payload).report;
 
   std::lock_guard locker(lock);
   process_reports_generic(
index dc68548c1595d9365b9fb10fd9fd437f8fcb0d0d..42eb195e72b062829d559c3793b09d3ea862b4fe 100644 (file)
@@ -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<OSDConfigPayload>(config_payload);
+  const OSDConfigPayload &osd_config_payload = std::get<OSDConfigPayload>(config_payload);
   const std::map<OSDPerfMetricQuery, OSDPerfMetricLimits> &queries = osd_config_payload.config;
   dout(10) << "setting " << queries.size() << " queries" << dendl;