]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Fix] Redis hyperscan cache: use write_servers for store/delete operations
authorVsevolod Stakhov <vsevolod@rspamd.com>
Wed, 28 Jan 2026 09:05:25 +0000 (09:05 +0000)
committerVsevolod Stakhov <vsevolod@rspamd.com>
Wed, 28 Jan 2026 09:05:25 +0000 (09:05 +0000)
The redis_backend was missing is_write=true in attrs for store and delete
operations, causing lua_redis.request to use read_servers instead of
write_servers. This resulted in READONLY errors when read and write servers
are configured separately.

lualib/lua_hs_cache.lua

index 5f3435a98d67aafe6e508d9e3fc09263957ea23a..96e2a5fa2920e44e52ca9032992765d8c4e78d95 100644 (file)
@@ -579,6 +579,7 @@ function redis_backend:store(cache_key, platform_id, data, ttl, callback)
   local attrs = {
     ev_base = self.redis_params.ev_base,
     config = self.config,
+    is_write = true,
     callback = function(err)
       if err then
         lua_util.debugm(N, self.config, "redis SETEX failed for key %s: %s", key, err)
@@ -608,6 +609,7 @@ function redis_backend:delete(cache_key, platform_id, callback)
   local attrs = {
     ev_base = self.redis_params.ev_base,
     config = self.config,
+    is_write = true,
     callback = function(err)
       if err then
         lua_util.debugm(N, self.config, "redis DEL failed for key %s: %s", key, err)