From 86cf85e0a2c5086df63ee8fc287502cb901b1073 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 5 Jan 2018 17:44:56 -0600 Subject: [PATCH] mgr: get config defaults on session open Leave them encoded until they are used, since usually we won't use them. This is about 50k currently. Signed-off-by: Sage Weil --- src/messages/MMgrOpen.h | 5 +++++ src/mgr/DaemonServer.cc | 4 ++++ src/mgr/DaemonState.h | 4 ++++ src/mgr/MgrClient.cc | 1 + 4 files changed, 14 insertions(+) diff --git a/src/messages/MMgrOpen.h b/src/messages/MMgrOpen.h index 171ef5a1e25..4f08f2751cd 100644 --- a/src/messages/MMgrOpen.h +++ b/src/messages/MMgrOpen.h @@ -34,6 +34,9 @@ public: // encode map> of current config bufferlist config_bl; + // encode map of compiled-in defaults + bufferlist config_defaults_bl; + void decode_payload() override { bufferlist::iterator p = payload.begin(); @@ -48,6 +51,7 @@ public: } if (header.version >= 3) { ::decode(config_bl, p); + ::decode(config_defaults_bl, p); } } @@ -61,6 +65,7 @@ public: encode(daemon_status, payload); } ::encode(config_bl, payload); + ::encode(config_defaults_bl, payload); } const char *get_type_name() const override { return "mgropen"; } diff --git a/src/mgr/DaemonServer.cc b/src/mgr/DaemonServer.cc index dcbbde15802..7b0ef76c245 100644 --- a/src/mgr/DaemonServer.cc +++ b/src/mgr/DaemonServer.cc @@ -395,6 +395,10 @@ bool DaemonServer::handle_open(MMgrOpen *m) ::decode(daemon->config, p); dout(20) << " got config " << daemon->config << dendl; } + daemon->config_defaults_bl = m->config_defaults_bl; + daemon->config_defaults.clear(); + dout(20) << " got config_defaults_bl " << daemon->config_defaults_bl.length() + << " bytes" << dendl; } if (m->get_connection()->get_peer_type() != entity_name_t::TYPE_CLIENT && diff --git a/src/mgr/DaemonState.h b/src/mgr/DaemonState.h index 352541583b3..4efd91b8770 100644 --- a/src/mgr/DaemonState.h +++ b/src/mgr/DaemonState.h @@ -109,6 +109,10 @@ class DaemonState // running config std::map> config; + // compiled-in config defaults (rarely used, so we leave them encoded!) + bufferlist config_defaults_bl; + std::map config_defaults; + // The perf counters received in MMgrReport messages DaemonPerfCounters perf_counters; diff --git a/src/mgr/MgrClient.cc b/src/mgr/MgrClient.cc index 2b557d0acef..7f50258b771 100644 --- a/src/mgr/MgrClient.cc +++ b/src/mgr/MgrClient.cc @@ -175,6 +175,7 @@ void MgrClient::_send_open() open->daemon_metadata = daemon_metadata; } cct->_conf->get_config_bl(&open->config_bl); + cct->_conf->get_defaults_bl(&open->config_defaults_bl); session->con->send_message(open); } }