Browse Source

Merge pull request #2946 from moisseev/bayes_expiry

[Rework] Bayes expiry: eliminate `default` expiration mode
tags/2.0
Vsevolod Stakhov 5 years ago
parent
commit
b79fe96d47
No account linked to committer's email address
1 changed files with 7 additions and 17 deletions
  1. 7
    17
      src/plugins/lua/bayes_expiry.lua

+ 7
- 17
src/plugins/lua/bayes_expiry.lua View File

@@ -32,7 +32,6 @@ local settings = {
epsilon_common = 0.01, -- eliminate common if spam to ham rate is equal to this epsilon
common_ttl = 10 * 86400, -- TTL of discriminated common elements
significant_factor = 3.0 / 4.0, -- which tokens should we update
lazy = false, -- enable lazy expiration mode
classifiers = {},
cluster_nodes = 0,
}
@@ -48,7 +47,6 @@ local function check_redis_classifier(cls, cfg)
expiry = expiry[1]
end

if cls.lazy then settings.lazy = cls.lazy end
-- Load symbols from statfiles

local function check_statfile_table(tbl, def_sym)
@@ -183,7 +181,6 @@ template.threshold = settings.threshold
template.common_ttl = settings.common_ttl
template.epsilon_common = settings.epsilon_common
template.significant_factor = settings.significant_factor
template.lazy = settings.lazy
template.expire_step = settings.interval
template.hostname = rspamd_util.get_hostname()

@@ -304,13 +301,8 @@ local expiry_script = [[
elseif total >= threshold and total > 0 then
if ham / total > ${significant_factor} or spam / total > ${significant_factor} then
significant = significant + 1
if ${lazy} or expire < 0 then
if ttl ~= -1 then
redis.call('PERSIST', key)
extended = extended + 1
end
else
redis.call('EXPIRE', key, expire)
if ttl ~= -1 then
redis.call('PERSIST', key)
extended = extended + 1
end
else
@@ -370,8 +362,6 @@ local function expire_step(cls, ev_base, worker)
local c_data = args[4]

local function log_stat(cycle)
local mode = settings.lazy and ' (lazy)' or ''
local significant_action = (settings.lazy or cls.expiry < 0) and 'made persistent' or 'extended'
local infrequent_action = (cls.expiry < 0) and 'made persistent' or 'ttls set'

local c_mean, c_stddev = 0, 0
@@ -382,16 +372,16 @@ local function expire_step(cls, ev_base, worker)
end

local d = cycle and {
'cycle in ' .. step .. ' steps', mode, c_data[1],
c_data[7], c_data[2], significant_action,
'cycle in ' .. step .. ' steps', c_data[1],
c_data[7], c_data[2], 'made persistent',
c_data[10], c_data[11], infrequent_action,
c_data[6], c_data[3],
c_data[8], c_data[9], infrequent_action,
c_mean,
c_stddev
} or {
'step ' .. step, mode, data[1],
data[7], data[2], significant_action,
'step ' .. step, data[1],
data[7], data[2], 'made persistent',
data[10], data[11], infrequent_action,
data[6], data[3],
data[8], data[9], infrequent_action,
@@ -399,7 +389,7 @@ local function expire_step(cls, ev_base, worker)
data[5]
}
logger.infox(rspamd_config,
'finished expiry %s%s: %s items checked, %s significant (%s %s), ' ..
'finished expiry %s: %s items checked, %s significant (%s %s), ' ..
'%s insignificant (%s %s), %s common (%s discriminated), ' ..
'%s infrequent (%s %s), %s mean, %s std',
lutil.unpack(d))

Loading…
Cancel
Save