From 1684ac34331f48e59c0485c3e18b1fe55b66c690 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Fri, 4 May 2018 11:52:06 +0800 Subject: [PATCH] mon,osd: dump "compression_algorithms" in "mon metadata" Fixes: http://tracker.ceph.com/issues/22420 Signed-off-by: Kefu Chai --- src/mon/Monitor.cc | 20 ++++++++++++++++++++ src/osd/OSD.cc | 30 ------------------------------ src/osd/OSD.h | 1 - 3 files changed, 20 insertions(+), 31 deletions(-) diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index 9c60431cb18..1c737f880b2 100644 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -14,6 +14,7 @@ #include +#include #include #include #include @@ -2067,10 +2068,29 @@ void Monitor::lose_election(epoch_t epoch, set &q, int l, finish_election(); } +namespace { +std::string collect_compression_algorithms() +{ + ostringstream os; + bool printed = false; + for (auto [name, key] : Compressor::compression_algorithms) { + if (printed) { + os << ", "; + } else { + printed = true; + } + std::ignore = key; + os << name; + } + return os.str(); +} +} + void Monitor::collect_metadata(Metadata *m) { collect_sys_info(m, g_ceph_context); (*m)["addr"] = stringify(messenger->get_myaddr()); + (*m)["compression_algorithms"] = collect_compression_algorithms(); } void Monitor::finish_election() diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 69475f6c54c..2952c64272e 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -15,16 +15,11 @@ #include "acconfig.h" -#include #include #include #include -#include - -#include #include - #include #include #include @@ -53,7 +48,6 @@ #include "common/version.h" #include "common/pick_address.h" #include "common/SubProcess.h" -#include "common/PluginRegistry.h" #include "os/ObjectStore.h" #ifdef HAVE_LIBFUSE @@ -5443,27 +5437,6 @@ void OSD::_send_boot() set_state(STATE_BOOTING); } -std::string OSD::_collect_compression_algorithms() -{ - using std::experimental::make_ostream_joiner; - - const auto& compression_algorithms = Compressor::compression_algorithms; - const auto& plugin_registry = cct->get_plugin_registry()->plugins; - - if (plugin_registry.empty()) - return {}; - - ostringstream os; - - copy_if(begin(compression_algorithms), end(compression_algorithms), - make_ostream_joiner(os, ", "), - [&plugin_registry](const auto& algorithm) { - return plugin_registry.end() != plugin_registry.find(algorithm.first); - }); - - return os.str(); -} - void OSD::_collect_metadata(map *pm) { // config info @@ -5495,9 +5468,6 @@ void OSD::_collect_metadata(map *pm) store->get_devices(&devnames); (*pm)["devices"] = stringify(devnames); - // Other information: - (*pm)["supported_compression_algorithms"] = _collect_compression_algorithms(); - dout(10) << __func__ << " " << *pm << dendl; } diff --git a/src/osd/OSD.h b/src/osd/OSD.h index d0acd4b8248..0ebe5ecd2eb 100644 --- a/src/osd/OSD.h +++ b/src/osd/OSD.h @@ -1915,7 +1915,6 @@ protected: void _preboot(epoch_t oldest, epoch_t newest); void _send_boot(); void _collect_metadata(map *pmeta); - std::string _collect_compression_algorithms(); void start_waiting_for_healthy(); bool _is_healthy(); -- 2.39.5