From 86b215391e40f762249a5dccbbca8ca00a966b22 Mon Sep 17 00:00:00 2001 From: Joao Eduardo Luis Date: Tue, 26 Aug 2014 16:45:17 +0100 Subject: [PATCH] mon: LogMonitor: observe config changes Signed-off-by: Joao Eduardo Luis --- src/mon/LogMonitor.cc | 11 +++++++++++ src/mon/LogMonitor.h | 26 +++++++++++++++++++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/src/mon/LogMonitor.cc b/src/mon/LogMonitor.cc index b3e2c9d9156a..e0e32ce12762 100644 --- a/src/mon/LogMonitor.cc +++ b/src/mon/LogMonitor.cc @@ -649,3 +649,14 @@ void LogMonitor::log_channel_info::expand_channel_meta(map &m) } generic_dout(10) << __func__ << " expanded map: " << m << dendl; } +void LogMonitor::handle_conf_change(const struct md_config_t *conf, + const std::set &changed) +{ + if (changed.count("mon_cluster_log_to_syslog") || + changed.count("mon_cluster_log_to_syslog_level") || + changed.count("mon_cluster_log_to_syslog_facility") || + changed.count("mon_cluster_log_file") || + changed.count("mon_cluster_log_file_level")) { + update_log_channels(); + } +} diff --git a/src/mon/LogMonitor.h b/src/mon/LogMonitor.h index a7a40781d335..d8e799add38e 100644 --- a/src/mon/LogMonitor.h +++ b/src/mon/LogMonitor.h @@ -30,7 +30,8 @@ class MMonCommand; static const string LOG_META_CHANNEL = "$channel"; -class LogMonitor : public PaxosService { +class LogMonitor : public PaxosService, + public md_config_obs_t { private: multimap pending_log; LogSummary pending_summary, summary; @@ -135,6 +136,12 @@ private: public: LogMonitor(Monitor *mn, Paxos *p, const string& service_name) : PaxosService(mn, p, service_name) { } + + void init() { + generic_dout(10) << "LogMonitor::init" << dendl; + g_conf->add_observer(this); + update_log_channels(); + } void tick(); // check state, take actions @@ -149,5 +156,22 @@ private: */ int sub_name_to_id(const string& n); + void on_shutdown() { + g_conf->remove_observer(this); + } + + const char **get_tracked_conf_keys() const { + static const char* KEYS[] = { + "mon_cluster_log_to_syslog", + "mon_cluster_log_to_syslog_level", + "mon_cluster_log_to_syslog_facility", + "mon_cluster_log_file", + "mon_cluster_log_file_level", + NULL + }; + return KEYS; + } + void handle_conf_change(const struct md_config_t *conf, + const std::set &changed); }; #endif -- 2.47.3