struct event *rrd_event;
struct rspamd_rrd_file *rrd;
+ struct event save_stats_event;
};
struct rspamd_controller_plugin_cbdata {
close (fd);
}
+static void
+rspamd_controller_stats_save_periodic (int fd, short what, gpointer ud)
+{
+ struct rspamd_controller_worker_ctx *ctx = ud;
+
+ rspamd_controller_store_saved_stats (ctx);
+}
+
static void
rspamd_controller_password_sane (struct rspamd_controller_worker_ctx *ctx,
const gchar *password, const gchar *type)
GHashTableIter iter;
gpointer key, value;
struct rspamd_keypair_cache *cache;
+ struct timeval stv;
+ const guint save_stats_interval = 60 * 1000; /* 1 minute */
gpointer m;
ctx->ev_base = rspamd_prepare_worker (worker,
rspamd_lua_run_postloads (ctx->cfg->lua_state, ctx->cfg, ctx->ev_base, worker);
+ /* Schedule periodic stats saving, see #1823 */
+ evtimer_set (&ctx->save_stats_event, rspamd_controller_stats_save_periodic,
+ ctx);
+ event_base_set (ctx->ev_base, &ctx->save_stats_event);
+ msec_to_tv (save_stats_interval, &stv);
+ evtimer_add (&ctx->save_stats_event, &stv);
+
/* Start event loop */
event_base_loop (ctx->ev_base, 0);
rspamd_worker_block_signals ();