From b2e00622655fc48d0f3d2db9bc784441c994602b Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Thu, 20 Jul 2017 08:18:10 +0100 Subject: [PATCH] [Feature] Allow to configure monitored --- src/controller.c | 5 ++++- src/libserver/cfg_file.h | 5 ++++- src/libserver/cfg_rcl.c | 12 ++++++++++++ src/libserver/monitored.c | 4 ++++ 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/controller.c b/src/controller.c index cef428eba..2f6fef716 100644 --- a/src/controller.c +++ b/src/controller.c @@ -3792,7 +3792,10 @@ start_controller_worker (struct rspamd_worker *worker) rspamd_stat_init (worker->srv->cfg, ctx->ev_base); if (worker->index == 0) { - rspamd_worker_init_monitored (worker, ctx->ev_base, ctx->resolver); + if (!ctx->cfg->disable_monitored) { + rspamd_worker_init_monitored (worker, ctx->ev_base, ctx->resolver); + } + rspamd_map_watch (worker->srv->cfg, ctx->ev_base, ctx->resolver, TRUE); } else { diff --git a/src/libserver/cfg_file.h b/src/libserver/cfg_file.h index 44b8dd85a..45202f5ab 100644 --- a/src/libserver/cfg_file.h +++ b/src/libserver/cfg_file.h @@ -377,7 +377,10 @@ struct rspamd_config { GList *maps; /**< maps active */ gdouble map_timeout; /**< maps watch timeout */ - gdouble map_file_watch_multiplier; /**< multiplier for watch timeout when maps are files */ + gdouble map_file_watch_multiplier; /**< multiplier for watch timeout when maps are files */ + + gdouble monitored_interval; /**< interval between monitored checks */ + gboolean disable_monitored; /**< disable monitoring completely */ struct symbols_cache *cache; /**< symbols cache object */ gchar *cache_filename; /**< filename of cache file */ diff --git a/src/libserver/cfg_rcl.c b/src/libserver/cfg_rcl.c index 67f91ab9b..596be1cf6 100644 --- a/src/libserver/cfg_rcl.c +++ b/src/libserver/cfg_rcl.c @@ -1989,6 +1989,18 @@ rspamd_rcl_config_init (struct rspamd_config *cfg) G_STRUCT_OFFSET (struct rspamd_config, map_file_watch_multiplier), 0, "Multiplier for map watch interval when map is file"); + rspamd_rcl_add_default_handler (sub, + "monitoring_watch_interval", + rspamd_rcl_parse_struct_time, + G_STRUCT_OFFSET (struct rspamd_config, monitored_interval), + RSPAMD_CL_FLAG_TIME_FLOAT, + "Interval for checking monitored instances"); + rspamd_rcl_add_default_handler (sub, + "disable_monitoring", + rspamd_rcl_parse_struct_boolean, + G_STRUCT_OFFSET (struct rspamd_config, disable_monitored), + 0, + "Disable monitoring completely"); rspamd_rcl_add_default_handler (sub, "dynamic_conf", rspamd_rcl_parse_struct_string, diff --git a/src/libserver/monitored.c b/src/libserver/monitored.c index 01979b11e..cc11183b2 100644 --- a/src/libserver/monitored.c +++ b/src/libserver/monitored.c @@ -414,6 +414,10 @@ rspamd_monitored_ctx_config (struct rspamd_monitored_ctx *ctx, ctx->change_cb = change_cb; ctx->ud = ud; + if (cfg->monitored_interval != 0) { + ctx->monitoring_interval = cfg->monitored_interval; + } + /* Start all events */ for (i = 0; i < ctx->elts->len; i ++) { m = g_ptr_array_index (ctx->elts, i); -- 2.39.5