]> source.dussan.org Git - rspamd.git/commitdiff
[Fix] Fix bayes schema conversion
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 26 Feb 2018 11:33:26 +0000 (11:33 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 26 Feb 2018 11:33:26 +0000 (11:33 +0000)
lualib/lua_stat.lua
lualib/rspamadm/configwizard.lua

index 5c7ca7f31201de4c8be904f85596de8e8309f407..81b5d0ed826bc61a0c7987465af2f57a1b55dbd6 100644 (file)
@@ -50,15 +50,21 @@ local nconverted = 0
 
 for _,k in ipairs(keys) do
   local elts = redis.call('HGETALL', k)
+  local neutral_prefix = string.gsub(k, KEYS[1], 'RS')
+  local real_key
+
+  for i,v in ipairs(elts) do
 
-  for k,v in pairs(elts) do
-    local neutral_prefix = string.gsub(k, KEYS[1], 'RS')
-    local nkey = string.format('%s_%s', neutral_prefix, k)
-    redis.call('HSET', nkey, KEYS[2], v)
-    if KEYS[4] and tonumber(KEYS[3]) ~= 0 then
-      redis.call('EXPIRE', nkey, KEYS[3])
+    if i % 2 ~= 0 then
+      real_key = v
+    else
+      local nkey = string.format('%s_%s', neutral_prefix, real_key)
+      redis.call('HSET', nkey, KEYS[2], v)
+      if KEYS[3] and tonumber(KEYS[3]) > 0 then
+        redis.call('EXPIRE', nkey, KEYS[3])
+      end
+      nconverted = nconverted + 1
     end
-    nconverted = nconverted + 1
   end
 end
 
@@ -70,7 +76,7 @@ return nconverted
   ret, res = conn:exec()
 
   if not ret then
-    logger.errx('error converting symbol %s', symbol_spam)
+    logger.errx('error converting symbol %s: %s', symbol_spam, res)
     return false
   else
     logger.messagex('converted %s elements from symbol %s', res, symbol_spam)
@@ -80,7 +86,7 @@ return nconverted
   ret, res = conn:exec()
 
   if not ret then
-    logger.errx('error converting symbol %s', symbol_ham)
+    logger.errx('error converting symbol %s: %s', symbol_ham, res)
     return false
   else
     logger.messagex('converted %s elements from symbol %s', res, symbol_ham)
index 5a42a8257d71828481b70deff75c4ee2a01087d6..3d3530b0cd801cc330fcf8a03179543c6e9498be 100644 (file)
@@ -335,7 +335,8 @@ local function check_redis_classifier(cls, changes)
         '100d')
       expire = lua_util.parse_time_interval(expire)
 
-      if not lua_stat_tools.convert_bayes_schema(parsed_redis, symbol_spam, symbol_ham) then
+      if not lua_stat_tools.convert_bayes_schema(parsed_redis, symbol_spam,
+          symbol_ham, expire) then
         printf("Conversion failed")
       else
         printf("Conversion succeed")