]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Add cache_reload option to specify timeout
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 24 Jan 2017 15:58:38 +0000 (15:58 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 24 Jan 2017 15:58:38 +0000 (15:58 +0000)
src/libserver/cfg_file.h
src/libserver/cfg_rcl.c
src/libserver/cfg_utils.c
src/libserver/symbols_cache.c

index a6399010bcaf48e88099b1b994dab91e71bc8075..89d13a1f2ccd88c75a7e78b90b822876286c883e 100644 (file)
@@ -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                                               */
index 8a72a8dd26211ca04bb773c67718d9db6ca06752..79e23588a86d1e593c8cfe2b260cedcb77ec5001 100644 (file)
@@ -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",
index e6b29edf8b95a287d177e3c1a4d67e095e5a8159..791d24fa0163221926afe3afdc9eff6ce48fb886 100644 (file)
@@ -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: $,}"
index d490f594d17c2d9e7456ad8eed19d5aa20dd2694..347c61b77676beca50732c32d1ea67e9435f1671 100644 (file)
@@ -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) {