aboutsummaryrefslogtreecommitdiffstats
path: root/lualib
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2018-10-25 14:22:20 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2018-10-25 14:22:20 +0100
commite55b2d55dd4beffc4aa9a935da419b51bab3dbbe (patch)
treeb1ec917a009bd31fdca5e4d4704429d75b59bd78 /lualib
parent55fd8637509981e691f1163948b1b2c472aba2d6 (diff)
downloadrspamd-e55b2d55dd4beffc4aa9a935da419b51bab3dbbe.tar.gz
rspamd-e55b2d55dd4beffc4aa9a935da419b51bab3dbbe.zip
[Minor] Fix configwizard behaviour when DB is empty
Diffstat (limited to 'lualib')
-rw-r--r--lualib/lua_stat.lua14
-rw-r--r--lualib/rspamadm/configwizard.lua11
2 files changed, 16 insertions, 9 deletions
diff --git a/lualib/lua_stat.lua b/lualib/lua_stat.lua
index b5eaafcd3..ff7d192ac 100644
--- a/lualib/lua_stat.lua
+++ b/lualib/lua_stat.lua
@@ -101,30 +101,30 @@ return nconverted
local keys = redis.call('SMEMBERS', KEYS[1]..'_keys')
for _,k in ipairs(keys) do
- local learns = redis.call('HGET', k, 'learns')
+ local learns = redis.call('HGET', k, 'learns') or 0
local neutral_prefix = string.gsub(k, KEYS[1], 'RS')
redis.call('HSET', neutral_prefix, KEYS[2], learns)
redis.call('SADD', KEYS[1]..'_keys', neutral_prefix)
redis.call('SREM', KEYS[1]..'_keys', k)
- redis.call('DEL', k)
- redis.call('SET', KEYS[1]..'_version', '2')
+ redis.call('DEL', KEYS[1])
+ redis.call('SET', k ..'_version', '2')
end
]]
conn:add_cmd('EVAL', {lua_script, '2', symbol_spam, 'learns_spam'})
- ret = conn:exec()
+ ret,res = conn:exec()
if not ret then
- logger.errx('error converting metadata for symbol %s', symbol_spam)
+ logger.errx('error converting metadata for symbol %s: %s', symbol_spam, res)
return false
end
conn:add_cmd('EVAL', {lua_script, '2', symbol_ham, 'learns_ham'})
- ret = conn:exec()
+ ret, res = conn:exec()
if not ret then
- logger.errx('error converting metadata for symbol %s', symbol_ham)
+ logger.errx('error converting metadata for symbol %s', symbol_ham, res)
return false
end
diff --git a/lualib/rspamadm/configwizard.lua b/lualib/rspamadm/configwizard.lua
index fb4caf20c..a4bccd7ab 100644
--- a/lualib/rspamadm/configwizard.lua
+++ b/lualib/rspamadm/configwizard.lua
@@ -395,6 +395,13 @@ local function check_redis_classifier(cls, changes)
end
local function get_version(conn)
+ conn:add_cmd("SMEMBERS", {"RS_keys"})
+
+ local ret,members = conn:exec()
+
+ -- Empty db
+ if not ret or #members == 0 then return false,0 end
+
-- We still need to check versions
local lua_script = [[
local ver = 0
@@ -469,8 +476,8 @@ return ttl
local r,ver = get_version(conn)
if not r then return false end
if ver ~= 2 then
- printf("You have configured new schema for %s/%s but your DB has old data",
- symbol_spam, symbol_ham)
+ printf("You have configured new schema for %s/%s but your DB has old version: %s",
+ symbol_spam, symbol_ham, ver)
try_convert(false)
else
printf("You have configured new schema for %s/%s and your DB already has new layout (v. %s). DB conversion is not needed.",