From ac01dff6a998bbc818466c559680487bedd46aa6 Mon Sep 17 00:00:00 2001 From: John Spray Date: Mon, 31 Jul 2017 05:52:08 -0400 Subject: [PATCH] osd/mon/mds: fix `config set` tell command This was working for setting values, but failing to call the config observers, so some values didn't take effect. Fixes: http://tracker.ceph.com/issues/20803 Signed-off-by: John Spray --- src/mds/MDSDaemon.cc | 3 +++ src/mon/Monitor.cc | 3 +++ src/osd/OSD.cc | 3 +++ 3 files changed, 9 insertions(+) diff --git a/src/mds/MDSDaemon.cc b/src/mds/MDSDaemon.cc index 2bbe759ed3e..883a4c3b9c6 100644 --- a/src/mds/MDSDaemon.cc +++ b/src/mds/MDSDaemon.cc @@ -781,6 +781,9 @@ int MDSDaemon::_handle_command( std::string val; cmd_getval(cct, cmdmap, "value", val); r = cct->_conf->set_val(key, val, true, &ss); + if (r == 0) { + cct->_conf->apply_changes(nullptr); + } } else if (prefix == "exit") { // We will send response before executing ss << "Exiting..."; diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index def5571c3d1..692c170b655 100644 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -3269,6 +3269,9 @@ void Monitor::handle_command(MonOpRequestRef op) std::string val; cmd_getval(cct, cmdmap, "value", val); r = g_conf->set_val(key, val, true, &ss); + if (r == 0) { + g_conf->apply_changes(nullptr); + } rs = ss.str(); goto out; } else if (prefix == "status" || diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 79f29db4b99..a21cb65cf46 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -6402,6 +6402,9 @@ void OSD::do_command(Connection *con, ceph_tid_t tid, vector& cmd, buffe cmd_getval(cct, cmdmap, "value", val); osd_lock.Unlock(); r = cct->_conf->set_val(key, val, true, &ss); + if (r == 0) { + cct->_conf->apply_changes(nullptr); + } osd_lock.Lock(); } else if (prefix == "cluster_log") { -- 2.39.5