]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/ConfigMonitor: do not 'config get' on NO_MON_UPDATE options
authorSage Weil <sage@redhat.com>
Sun, 19 Jan 2020 21:17:46 +0000 (15:17 -0600)
committerSage Weil <sage@redhat.com>
Mon, 20 Jan 2020 19:12:04 +0000 (13:12 -0600)
We shouldn't be storing these, so don't fetch them either.

Fixes: https://tracker.ceph.com/issues/42820
Signed-off-by: Sage Weil <sage@redhat.com>
src/mon/ConfigMonitor.cc

index f22dac578d34317298d0cd61aca5e61185a63e50..0890b22692abe9120ce1e5dd4bdc8dd35033fa2f 100644 (file)
@@ -286,13 +286,6 @@ bool ConfigMonitor::preprocess_command(MonOpRequestRef op)
       &src);
 
     if (cmd_getval(g_ceph_context, cmdmap, "key", name)) {
-      // get a single value
-      auto p = config.find(name);
-      if (p != config.end()) {
-       odata.append(p->second);
-       odata.append("\n");
-       goto reply;
-      }
       const Option *opt = g_conf().find_option(name);
       if (!opt) {
        opt = mon->mgrmon()->find_module_option(name);
@@ -301,6 +294,18 @@ bool ConfigMonitor::preprocess_command(MonOpRequestRef op)
        err = -ENOENT;
        goto reply;
       }
+      if (opt->has_flag(Option::FLAG_NO_MON_UPDATE)) {
+       err = -EINVAL;
+       ss << name << " is special and cannot be stored by the mon";
+       goto reply;
+      }
+      // get a single value
+      auto p = config.find(name);
+      if (p != config.end()) {
+       odata.append(p->second);
+       odata.append("\n");
+       goto reply;
+      }
       if (!entity.is_client() &&
          !boost::get<boost::blank>(&opt->daemon_value)) {
        odata.append(Option::to_str(opt->daemon_value));