]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Check Redis layout before converting
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 26 Feb 2018 11:45:18 +0000 (11:45 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 26 Feb 2018 11:45:18 +0000 (11:45 +0000)
lualib/rspamadm/configwizard.lua

index 3d3530b0cd801cc330fcf8a03179543c6e9498be..b5bff38cea2223c5a51f22dcbc447d7c43006e0a 100644 (file)
@@ -351,10 +351,7 @@ local function check_redis_classifier(cls, changes)
     end
   end
 
-  if not cls.new_schema then
-    printf("You are using an old schema for %s/%s", symbol_ham, symbol_spam)
-    try_convert()
-  else
+  local function get_version()
     local _,conn = lua_redis.redis_connect_sync(parsed_redis, true)
     -- We still need to check versions
     local lua_script = [[
@@ -369,7 +366,33 @@ return ver
 ]]
     conn:add_cmd('EVAL', {lua_script, '1', symbol_spam})
     local _,ver = conn:exec()
-    if tonumber(ver) ~= 2 then
+
+    return tonumber(ver)
+  end
+
+  if not cls.new_schema then
+    local ver = get_version()
+
+    if ver ~= 2 then
+      printf("You are using an old schema for %s/%s", symbol_ham, symbol_spam)
+      try_convert()
+    else
+      printf("You have configured an old schema for %s/%s but your data has new layout",
+          symbol_ham, symbol_spam)
+
+      if ask_yes_no("Switch config to the new schema?", true) then
+        changes.l['classifier_bayes'] = {
+          new_schema = true,
+        }
+
+        if expire then
+          changes.l['classifier_bayes'].expire = expire
+        end
+      end
+    end
+  else
+    local ver = get_version()
+    if ver ~= 2 then
       printf("You have configured new schema for %s/%s but your DB has old data",
         symbol_spam, symbol_ham)
       try_convert()