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 */
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",
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)
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);
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) {
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;
g_assert (cache != NULL);
+ cache->reload_time = cache->cfg->cache_reload_time;
/* Just in-memory cache */
if (cache->cfg->cache_filename == NULL) {