https://bz.apache.org/SpamAssassin/show_bug.cgi?id=8331
Bug ID: 8331
Summary: Redis.pm: separate read/write server handling
Product: Spamassassin
Version: SVN Trunk (Latest Devel Version)
Hardware: PC
OS: Linux
Status: NEW
Severity: normal
Priority: P2
Component: Libraries
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: Undefined
With this patch, the basic Redis replication can be used in order to increase
availability. The main motivation for this patch was our setup, where we use
spamassassin on multiple nodes and also multiple Redis-like instances (Redict
in our case). As we need consistent Bayes results across all nodes, the most
reasonable setup is having one master (write_server) and multiple replicas
(read_servers). We also want to ensure that Bayes results are gathered in case
the write_server is unavailable.
New Configuration Parameters:
bayes_redis_read_servers: Comma-separated list of read servers
bayes_redis_write_server: Single write server configuration
bayes_redis_database: Redis database index
bayes_redis_password: Authentication password
bayes_redis_prefix: Key prefix for namespacing
Backward Compatibility:
Maintains support for the legacy bayes_sql_dsn parameter
Legacy configuration will be used if no new parameters are specified
Key Namespacing:
All Redis keys are prefixed with key_prefix to allow multiple instances
to share a Redis database
Added a helper method key() to consistently apply the prefix
Read Server Failover:
Automatic failover between read servers if one becomes unavailable
Tries each read server in sequence until successful connection
Remembers last successful read server to optimize future connections
Connection Management:
Clear separation of read vs. write connections
Proper cleanup during fork operations (prefork_init and
spamd_child_init)
Improved error handling with detailed error messages
--
You are receiving this mail because:
You are the assignee for the bug.