aboutsummaryrefslogtreecommitdiffstats
path: root/lualib
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@rspamd.com>2024-02-01 11:49:07 +0000
committerVsevolod Stakhov <vsevolod@rspamd.com>2024-02-01 11:50:05 +0000
commit500fac7fd7861f926cbe2735d43e1cfc9b9c7a9e (patch)
treea08b2a15f69525f7e85e5705542e4bc9c8ce2364 /lualib
parent9259503f04a54fdb87ce972b162ed9950a164649 (diff)
downloadrspamd-500fac7fd7861f926cbe2735d43e1cfc9b9c7a9e.tar.gz
rspamd-500fac7fd7861f926cbe2735d43e1cfc9b9c7a9e.zip
[Fix] Resolve issue with bayes stat in `rspamadm` mode
Diffstat (limited to 'lualib')
-rw-r--r--lualib/lua_bayes_redis.lua61
1 files changed, 32 insertions, 29 deletions
diff --git a/lualib/lua_bayes_redis.lua b/lualib/lua_bayes_redis.lua
index 753399705..782e6fc47 100644
--- a/lualib/lua_bayes_redis.lua
+++ b/lualib/lua_bayes_redis.lua
@@ -134,40 +134,43 @@ exports.lua_bayes_init_statfile = function(classifier_ucl, statfile_ucl, symbol,
revision = 0, -- number of learns
}
local cursor = 0
- rspamd_config:add_periodic(ev_base, 0.0, function(cfg, _)
- local function stat_redis_cb(err, data)
- lua_util.debugm(N, cfg, 'stat redis cb: %s, %s', err, data)
+ if ev_base then
+ rspamd_config:add_periodic(ev_base, 0.0, function(cfg, _)
- if err then
- logger.warn(cfg, 'cannot get bayes statistics for %s: %s', symbol, err)
- else
- local new_cursor = data[1]
- current_data.users = current_data.users + data[2]
- current_data.revision = current_data.revision + data[3]
- if new_cursor == 0 then
- -- Done iteration
- final_data = lua_util.shallowcopy(current_data)
- current_data = {
- users = 0,
- revision = 0,
- }
- lua_util.debugm(N, cfg, 'final data: %s', final_data)
- stat_periodic_cb(cfg, final_data)
- end
+ local function stat_redis_cb(err, data)
+ lua_util.debugm(N, cfg, 'stat redis cb: %s, %s', err, data)
- cursor = new_cursor
+ if err then
+ logger.warn(cfg, 'cannot get bayes statistics for %s: %s', symbol, err)
+ else
+ local new_cursor = data[1]
+ current_data.users = current_data.users + data[2]
+ current_data.revision = current_data.revision + data[3]
+ if new_cursor == 0 then
+ -- Done iteration
+ final_data = lua_util.shallowcopy(current_data)
+ current_data = {
+ users = 0,
+ revision = 0,
+ }
+ lua_util.debugm(N, cfg, 'final data: %s', final_data)
+ stat_periodic_cb(cfg, final_data)
+ end
+
+ cursor = new_cursor
+ end
end
- end
- lua_redis.exec_redis_script(stat_script_id,
- { ev_base = ev_base, cfg = cfg, is_write = false },
- stat_redis_cb, { tostring(cursor),
- symbol,
- is_spam and "learns_spam" or "learns_ham",
- tostring(max_users) })
- return statfile_ucl.monitor_timeout or classifier_ucl.monitor_timeout or 30.0
- end)
+ lua_redis.exec_redis_script(stat_script_id,
+ { ev_base = ev_base, cfg = cfg, is_write = false },
+ stat_redis_cb, { tostring(cursor),
+ symbol,
+ is_spam and "learns_spam" or "learns_ham",
+ tostring(max_users) })
+ return statfile_ucl.monitor_timeout or classifier_ucl.monitor_timeout or 30.0
+ end)
+ end
return gen_classify_functor(redis_params, classify_script_id), gen_learn_functor(redis_params, learn_script_id)
end