Hi Quan, > While Redis replicas allow executing read-only Lua scripts, Kvrocks replicas appear to be stricter, rejecting the command with the ReadOnly error.
Apache Kvrocks did not allow to run EVALSHA in replica node. I will create an issue to track this issue and hope it can be supported ASAP. On Mon, 31 Mar 2025 at 11:58, Hong Quan TRAN <[email protected]> wrote: > Hi Apache Kvrocks community, > > > We've been working on integrating Apache Kvrocks with Apache James and > Rspamd, documenting our Docker Compose setup in this PR. While setting up > Kvrocks in Sentinel mode, we noticed a lack of documentation and would be > happy to contribute to improving it. > > > During our Kvrocks Sentinel + Rspamd setup, we observed a difference in > how the EVALSHA command is handled compared to Redis. Rspamd uses EVALSHA > to execute a read-only Lua script for retrieving BAYES statistics. While > Redis replicas allow executing read-only Lua scripts, Kvrocks replicas > appear to be stricter, rejecting the command with the ReadOnly error. As a > workaround, we have configured slave-read-only no to enable Rspamd to read > BAYES statistics from Kvrocks replicas while relying on Sentinel to > correctly detect master and replica endpoints. > > > We would appreciate any feedback on our setup and approach. > > > Best regards, > > > Quan > > > On Mar 3, 2025 3:12 PM, from Benoit Tellier <[email protected]>Hello > folks, > > I'm involved on the Apache James email server, and as part of Apache James > we currently have a Redis integration. > > Redis is used for: > > - 1. Implementing rate limiting in a distributed fashion by using leaky > bucket algorithm > - 2. Implementing sid storage as part of our OpenID connect backchannel > logout (integrated in Apache APISIX - java plugin runner) > - 3. Use redis streams for backing apache James pub sub (~email > notifications) > - 4. Store bayes database for our RSPAMD setup > > Our setup needs to be using sentinel (some use case like 4. relies on > commands not supplied from Redis cluster) > > Our biggest pain is that, as we use a per user database for bayes the > database grows significantly and storing this DB in memory is not > financially viable. > > In order to solve our concerns with 4. (and as we are not performance > bound for Redis components) we are considering switching our use cases to > KVrocks, and potentially makes KVrocks the default key value store / cache > for Apache James. > > I (in the name of the Apache James PMC and LINAGORA contributors) would > happily report on how this integrations goes on. > > -- > > Best regards, > > Benoit TELLIER > > General manager of Linagora VIETNAM . > Product owner for Team-Mail product. > Chairman of the Apache James project . > > Mail: [email protected] > Tel: (0033) 6 77 26 04 58 (WhatsApp, Signal) > > > -- Best Regards, - *Hulk Lin*
