From 69188f06098f8ced45217b7891abf8b799ffb636 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Tue, 24 Jan 2017 15:58:38 +0000 Subject: [PATCH] [Minor] Add cache_reload option to specify timeout --- src/libserver/cfg_file.h | 3 ++- src/libserver/cfg_rcl.c | 6 ++++++ src/libserver/cfg_utils.c | 1 + src/libserver/symbols_cache.c | 14 ++------------ 4 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/libserver/cfg_file.h b/src/libserver/cfg_file.h index a6399010b..89d13a1f2 100644 --- a/src/libserver/cfg_file.h +++ b/src/libserver/cfg_file.h @@ -373,7 +373,8 @@ struct rspamd_config { struct symbols_cache *cache; /**< symbols cache object */ gchar *cache_filename; /**< filename of cache file */ - struct rspamd_metric *default_metric; /**< default metric */ + gdouble cache_reload_time; /**< how often cache reload should be performed */ + struct rspamd_metric *default_metric; /**< default metric */ gchar * checksum; /**< real checksum of config file */ gchar * dump_checksum; /**< dump checksum of config file */ diff --git a/src/libserver/cfg_rcl.c b/src/libserver/cfg_rcl.c index 8a72a8dd2..79e23588a 100644 --- a/src/libserver/cfg_rcl.c +++ b/src/libserver/cfg_rcl.c @@ -1853,6 +1853,12 @@ rspamd_rcl_config_init (struct rspamd_config *cfg) G_STRUCT_OFFSET (struct rspamd_config, cache_filename), RSPAMD_CL_FLAG_STRING_PATH, "Path to the cache file"); + rspamd_rcl_add_default_handler (sub, + "cache_reload", + rspamd_rcl_parse_struct_time, + G_STRUCT_OFFSET (struct rspamd_config, cache_reload_time), + RSPAMD_CL_FLAG_TIME_FLOAT, + "How often cache reload should be performed"); /* Old DNS configuration */ rspamd_rcl_add_default_handler (sub, "dns_nameserver", diff --git a/src/libserver/cfg_utils.c b/src/libserver/cfg_utils.c index e6b29edf8..791d24fa0 100644 --- a/src/libserver/cfg_utils.c +++ b/src/libserver/cfg_utils.c @@ -145,6 +145,7 @@ rspamd_config_new (void) cfg->history_rows = 200; cfg->log_error_elts = 10; cfg->log_error_elt_maxlen = 1000; + cfg->cache_reload_time = 30.0; /* Default log line */ cfg->log_format_str = "id: <$mid>,$if_qid{ qid: <$>,}$if_ip{ ip: $,}" diff --git a/src/libserver/symbols_cache.c b/src/libserver/symbols_cache.c index d490f594d..347c61b77 100644 --- a/src/libserver/symbols_cache.c +++ b/src/libserver/symbols_cache.c @@ -171,8 +171,6 @@ struct rspamd_cache_refresh_cbdata { struct event_base *ev_base; }; -/* XXX: Maybe make it configurable */ -#define CACHE_RELOAD_TIME 60.0 /* weight, frequency, time */ #define TIME_ALPHA (1.0) #define WEIGHT_ALPHA (0.1) @@ -294,9 +292,6 @@ cache_logic_cmp (const void *p1, const void *p2, gpointer ud) if (i2->deps->len != 0) { w2 = 1.0 / (i2->deps->len); } - msg_debug_cache ("deps length: %s -> %.2f, %s -> %.2f", - i1->symbol, w1 * 1000.0, - i2->symbol, w2 * 1000.0); } else if (i1->priority == i2->priority) { avg_freq = ((gdouble)cache->total_hits / cache->used_items); @@ -309,17 +304,11 @@ cache_logic_cmp (const void *p1, const void *p2, gpointer ud) t2 = i2->st->avg_time; w1 = SCORE_FUN (weight1, f1, t1); w2 = SCORE_FUN (weight2, f2, t2); - msg_debug_cache ("%s -> %.2f, %s -> %.2f", - i1->symbol, w1 * 1000.0, - i2->symbol, w2 * 1000.0); } else { /* Strict sorting */ w1 = abs (i1->priority); w2 = abs (i2->priority); - msg_debug_cache ("priority: %s -> %.2f, %s -> %.2f", - i1->symbol, w1 * 1000.0, - i2->symbol, w2 * 1000.0); } if (w2 > w1) { @@ -934,7 +923,7 @@ rspamd_symbols_cache_new (struct rspamd_config *cfg) cache->postfilters = g_ptr_array_new (); cache->composites = g_ptr_array_new (); cache->mtx = rspamd_mempool_get_mutex (cache->static_pool); - cache->reload_time = CACHE_RELOAD_TIME; + cache->reload_time = cfg->cache_reload_time; cache->total_hits = 1; cache->total_weight = 1.0; cache->cfg = cfg; @@ -950,6 +939,7 @@ rspamd_symbols_cache_init (struct symbols_cache* cache) g_assert (cache != NULL); + cache->reload_time = cache->cfg->cache_reload_time; /* Just in-memory cache */ if (cache->cfg->cache_filename == NULL) { -- 2.39.5