瀏覽代碼

[Project] Rework and simplify fuzzy storage, remove mirroring

tags/2.0
Vsevolod Stakhov 5 年之前
父節點
當前提交
8e33c251c9
共有 2 個文件被更改,包括 234 次插入1472 次删除
  1. 27
    31
      src/controller.c
  2. 207
    1441
      src/fuzzy_storage.c

+ 27
- 31
src/controller.c 查看文件

@@ -105,12 +105,8 @@ INIT_LOG_MODULE(controller)
#define COLOR_REJECT "#CB4B4B"
#define COLOR_TOTAL "#9440ED"

const struct timeval rrd_update_time = {
.tv_sec = 1,
.tv_usec = 0
};

const guint64 rspamd_controller_ctx_magic = 0xf72697805e6941faULL;
const static ev_tstamp rrd_update_time = 1.0;
const static guint64 rspamd_controller_ctx_magic = 0xf72697805e6941faULL;

extern void fuzzy_stat_command (struct rspamd_task *task);

@@ -132,7 +128,7 @@ worker_t controller_worker = {
struct rspamd_controller_worker_ctx {
guint64 magic;
/* Events base */
struct ev_loop *ev_base;
struct ev_loop *event_loop;
/* DNS resolver */
struct rspamd_dns_resolver *resolver;
/* Config */
@@ -153,7 +149,7 @@ struct rspamd_controller_worker_ctx {
struct rspamd_http_context *http_ctx;
struct rspamd_http_connection_router *http;
/* Server's start time */
time_t start_time;
ev_tstamp start_time;
/* Main server */
struct rspamd_main *srv;
/* SSL cert */
@@ -182,9 +178,9 @@ struct rspamd_controller_worker_ctx {
/* Local keypair */
gpointer key;

struct event *rrd_event;
ev_timer rrd_event;
struct rspamd_rrd_file *rrd;
struct event save_stats_event;
ev_timer save_stats_event;
struct rspamd_lang_detector *lang_det;
gdouble task_timeout;
};
@@ -1525,7 +1521,7 @@ rspamd_controller_handle_lua_history (lua_State *L,

if (lua_isfunction (L, -1)) {
task = rspamd_task_new (session->ctx->worker, session->cfg,
session->pool, ctx->lang_det, ctx->ev_base);
session->pool, ctx->lang_det, ctx->event_loop);

task->resolver = ctx->resolver;
task->s = rspamd_session_create (session->pool,
@@ -1822,7 +1818,7 @@ rspamd_controller_handle_lua (struct rspamd_http_connection_entry *conn_ent,
}

task = rspamd_task_new (session->ctx->worker, session->cfg, session->pool,
ctx->lang_det, ctx->ev_base);
ctx->lang_det, ctx->event_loop);

task->resolver = ctx->resolver;
task->s = rspamd_session_create (session->pool,
@@ -2004,7 +2000,7 @@ rspamd_controller_handle_learn_common (
}

task = rspamd_task_new (session->ctx->worker, session->cfg, session->pool,
session->ctx->lang_det, ctx->ev_base);
session->ctx->lang_det, ctx->event_loop);

task->resolver = ctx->resolver;
task->s = rspamd_session_create (session->pool,
@@ -2102,7 +2098,7 @@ rspamd_controller_handle_scan (struct rspamd_http_connection_entry *conn_ent,
}

task = rspamd_task_new (session->ctx->worker, session->cfg, session->pool,
ctx->lang_det, ctx->ev_base);
ctx->lang_det, ctx->event_loop);

task->resolver = ctx->resolver;
task->s = rspamd_session_create (session->pool,
@@ -2133,7 +2129,7 @@ rspamd_controller_handle_scan (struct rspamd_http_connection_entry *conn_ent,

event_set (&task->timeout_ev, -1, EV_TIMEOUT, rspamd_task_timeout,
task);
event_base_set (ctx->ev_base, &task->timeout_ev);
event_base_set (ctx->event_loop, &task->timeout_ev);
double_to_tv (ctx->task_timeout, &task_tv);
event_add (&task->timeout_ev, &task_tv);
}
@@ -2600,7 +2596,7 @@ rspamd_controller_handle_stat_common (
ctx = session->ctx;

task = rspamd_task_new (session->ctx->worker, session->cfg, session->pool,
ctx->lang_det, ctx->ev_base);
ctx->lang_det, ctx->event_loop);
task->resolver = ctx->resolver;
cbdata = rspamd_mempool_alloc0 (session->pool, sizeof (*cbdata));
cbdata->conn_ent = conn_ent;
@@ -3002,7 +2998,7 @@ rspamd_controller_handle_lua_plugin (struct rspamd_http_connection_entry *conn_e
}

task = rspamd_task_new (session->ctx->worker, session->cfg, session->pool,
ctx->lang_det, ctx->ev_base);
ctx->lang_det, ctx->event_loop);

task->resolver = ctx->resolver;
task->s = rspamd_session_create (session->pool,
@@ -3487,7 +3483,7 @@ lua_csession_get_ev_base (lua_State *L)
s = c->ud;
pbase = lua_newuserdata (L, sizeof (struct ev_loop *));
rspamd_lua_setclass (L, "rspamd{ev_base}", -1);
*pbase = s->ctx->ev_base;
*pbase = s->ctx->event_loop;
}
else {
return luaL_error (L, "invalid arguments");
@@ -3702,7 +3698,7 @@ start_controller_worker (struct rspamd_worker *worker)
const guint save_stats_interval = 60 * 1000; /* 1 minute */
gpointer m;

ctx->ev_base = rspamd_prepare_worker (worker,
ctx->event_loop = rspamd_prepare_worker (worker,
"controller",
rspamd_controller_accept_socket);
msec_to_tv (ctx->timeout, &ctx->io_tv);
@@ -3752,7 +3748,7 @@ start_controller_worker (struct rspamd_worker *worker)
if (ctx->rrd) {
ctx->rrd_event = g_malloc0 (sizeof (*ctx->rrd_event));
evtimer_set (ctx->rrd_event, rspamd_controller_rrd_update, ctx);
event_base_set (ctx->ev_base, ctx->rrd_event);
event_base_set (ctx->event_loop, ctx->rrd_event);
event_add (ctx->rrd_event, &rrd_update_time);
}
else if (rrd_err) {
@@ -3773,7 +3769,7 @@ start_controller_worker (struct rspamd_worker *worker)
"password");

/* Accept event */
ctx->http_ctx = rspamd_http_context_create (ctx->cfg, ctx->ev_base,
ctx->http_ctx = rspamd_http_context_create (ctx->cfg, ctx->event_loop,
ctx->cfg->ups_ctx);
ctx->http = rspamd_http_router_new (rspamd_controller_error_handler,
rspamd_controller_finish_handler, &ctx->io_tv,
@@ -3889,40 +3885,40 @@ start_controller_worker (struct rspamd_worker *worker)
rspamd_controller_handle_unknown);

ctx->resolver = rspamd_dns_resolver_init (worker->srv->logger,
ctx->ev_base,
ctx->event_loop,
worker->srv->cfg);

rspamd_upstreams_library_config (worker->srv->cfg, worker->srv->cfg->ups_ctx,
ctx->ev_base, ctx->resolver->r);
rspamd_symcache_start_refresh (worker->srv->cfg->cache, ctx->ev_base,
ctx->event_loop, ctx->resolver->r);
rspamd_symcache_start_refresh (worker->srv->cfg->cache, ctx->event_loop,
worker);
rspamd_stat_init (worker->srv->cfg, ctx->ev_base);
rspamd_stat_init (worker->srv->cfg, ctx->event_loop);

if (worker->index == 0) {
if (!ctx->cfg->disable_monitored) {
rspamd_worker_init_monitored (worker, ctx->ev_base, ctx->resolver);
rspamd_worker_init_monitored (worker, ctx->event_loop, ctx->resolver);
}

rspamd_map_watch (worker->srv->cfg, ctx->ev_base,
rspamd_map_watch (worker->srv->cfg, ctx->event_loop,
ctx->resolver, worker, TRUE);

/* Schedule periodic stats saving, see #1823 */
event_set (&ctx->save_stats_event, -1, EV_PERSIST,
rspamd_controller_stats_save_periodic,
ctx);
event_base_set (ctx->ev_base, &ctx->save_stats_event);
event_base_set (ctx->event_loop, &ctx->save_stats_event);
msec_to_tv (save_stats_interval, &stv);
evtimer_add (&ctx->save_stats_event, &stv);
}
else {
rspamd_map_watch (worker->srv->cfg, ctx->ev_base,
rspamd_map_watch (worker->srv->cfg, ctx->event_loop,
ctx->resolver, worker, FALSE);
}

rspamd_lua_run_postloads (ctx->cfg->lua_state, ctx->cfg, ctx->ev_base, worker);
rspamd_lua_run_postloads (ctx->cfg->lua_state, ctx->cfg, ctx->event_loop, worker);

/* Start event loop */
event_base_loop (ctx->ev_base, 0);
event_base_loop (ctx->event_loop, 0);
rspamd_worker_block_signals ();

rspamd_stat_close ();

+ 207
- 1441
src/fuzzy_storage.c
文件差異過大導致無法顯示
查看文件


Loading…
取消
儲存