From: Sage Weil Date: Fri, 31 Aug 2018 22:04:42 +0000 (-0500) Subject: mon/ConfigMonitor: fix loading of non-module mgr config options X-Git-Tag: v13.2.3~147^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e8f6eeed0ea1f0f775c0aba5136bcccfa5159388;p=ceph.git mon/ConfigMonitor: fix loading of non-module mgr config options "*/mgr/*" is special (including "global/mgr/*" and "mgr/mgr/*" and "mgr.foo/mgr/*". "mgr/*" is wrong. Fixes: http://tracker.ceph.com/issues/35076 Signed-off-by: Sage Weil (cherry picked from commit b56984645c355bca5478e7ffd4629341477a50e4) Conflicts: src/mon/ConfigMonitor.cc : Resovled in load_config --- diff --git a/src/mon/ConfigMonitor.cc b/src/mon/ConfigMonitor.cc index c2627c076011..28c960dd471e 100644 --- a/src/mon/ConfigMonitor.cc +++ b/src/mon/ConfigMonitor.cc @@ -633,22 +633,23 @@ void ConfigMonitor::load_config() } string section_name; - if (key.find("mgr") == 0) { - name = key.substr(key.find('/') + 1); - MaskedOption mopt(new Option(name, Option::TYPE_STR, Option::LEVEL_UNKNOWN)); + if (key.find("/mgr/") != std::string::npos) { + // mgr module option, "something/mgr/foo" + name = key.substr(key.find("/mgr/") + 1); + MaskedOption mopt(new Option(name, Option::TYPE_STR, + Option::LEVEL_UNKNOWN)); mopt.raw_value = value; Section *section = &config_map.global;; section_name = "mgr"; - if (section_name.size()) { - if (section_name.find('.') != std::string::npos) { - section = &config_map.by_id[section_name]; - } else { - section = &config_map.by_type[section_name]; - } + if (section_name.find('.') != std::string::npos) { + section = &config_map.by_id[section_name]; + } else { + section = &config_map.by_type[section_name]; } section->options.insert(make_pair(name, std::move(mopt))); ++num; } else { + // normal option const Option *opt = g_conf->find_option(name); if (!opt) { dout(10) << __func__ << " unrecognized option '" << name << "'" << dendl;