]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/ConfigMonitor: fix loading of non-module mgr config options 24176/head
authorSage Weil <sage@redhat.com>
Fri, 31 Aug 2018 22:04:42 +0000 (17:04 -0500)
committerPrashant D <pdhange@redhat.com>
Wed, 19 Sep 2018 05:29:44 +0000 (01:29 -0400)
"*/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 <sage@redhat.com>
(cherry picked from commit b56984645c355bca5478e7ffd4629341477a50e4)

Conflicts:
src/mon/ConfigMonitor.cc : Resovled in load_config

src/mon/ConfigMonitor.cc

index c2627c076011ec32264deb5eefe61c78f3c047f3..28c960dd471ea0c44b8107a13835f28deb4ff53f 100644 (file)
@@ -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;