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 <sage@redhat.com>
This commit is contained in:
Sage Weil 2018-01-05 17:44:56 -06:00
parent ed77b096ec
commit 86cf85e0a2
4 changed files with 14 additions and 0 deletions

View File

@ -34,6 +34,9 @@ public:
// encode map<string,map<int32_t,string>> of current config // encode map<string,map<int32_t,string>> of current config
bufferlist config_bl; bufferlist config_bl;
// encode map<string,string> of compiled-in defaults
bufferlist config_defaults_bl;
void decode_payload() override void decode_payload() override
{ {
bufferlist::iterator p = payload.begin(); bufferlist::iterator p = payload.begin();
@ -48,6 +51,7 @@ public:
} }
if (header.version >= 3) { if (header.version >= 3) {
::decode(config_bl, p); ::decode(config_bl, p);
::decode(config_defaults_bl, p);
} }
} }
@ -61,6 +65,7 @@ public:
encode(daemon_status, payload); encode(daemon_status, payload);
} }
::encode(config_bl, payload); ::encode(config_bl, payload);
::encode(config_defaults_bl, payload);
} }
const char *get_type_name() const override { return "mgropen"; } const char *get_type_name() const override { return "mgropen"; }

View File

@ -395,6 +395,10 @@ bool DaemonServer::handle_open(MMgrOpen *m)
::decode(daemon->config, p); ::decode(daemon->config, p);
dout(20) << " got config " << daemon->config << dendl; 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 && if (m->get_connection()->get_peer_type() != entity_name_t::TYPE_CLIENT &&

View File

@ -109,6 +109,10 @@ class DaemonState
// running config // running config
std::map<std::string,std::map<int32_t,std::string>> config; std::map<std::string,std::map<int32_t,std::string>> config;
// compiled-in config defaults (rarely used, so we leave them encoded!)
bufferlist config_defaults_bl;
std::map<std::string,std::string> config_defaults;
// The perf counters received in MMgrReport messages // The perf counters received in MMgrReport messages
DaemonPerfCounters perf_counters; DaemonPerfCounters perf_counters;

View File

@ -175,6 +175,7 @@ void MgrClient::_send_open()
open->daemon_metadata = daemon_metadata; open->daemon_metadata = daemon_metadata;
} }
cct->_conf->get_config_bl(&open->config_bl); cct->_conf->get_config_bl(&open->config_bl);
cct->_conf->get_defaults_bl(&open->config_defaults_bl);
session->con->send_message(open); session->con->send_message(open);
} }
} }