From fcf6e3323de9793a2d2783d18645323f99e92b19 Mon Sep 17 00:00:00 2001 From: felipe <130432649+felipe-op@users.noreply.github.com> Date: Mon, 18 Mar 2024 11:26:39 -0700 Subject: [PATCH] feat(proxyd): use a specific redis instance for consensus_ha (#9877) --- proxyd/proxyd/config.go | 1 + proxyd/proxyd/proxyd.go | 10 +++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/proxyd/proxyd/config.go b/proxyd/proxyd/config.go index cd0cca1..3c622f8 100644 --- a/proxyd/proxyd/config.go +++ b/proxyd/proxyd/config.go @@ -123,6 +123,7 @@ type BackendGroupConfig struct { ConsensusHA bool `toml:"consensus_ha"` ConsensusHAHeartbeatInterval TOMLDuration `toml:"consensus_ha_heartbeat_interval"` ConsensusHALockPeriod TOMLDuration `toml:"consensus_ha_lock_period"` + ConsensusHARedis RedisConfig `toml:"consensus_ha_redis"` } type BackendGroupsConfig map[string]*BackendGroupConfig diff --git a/proxyd/proxyd/proxyd.go b/proxyd/proxyd/proxyd.go index 7af47b1..b853429 100644 --- a/proxyd/proxyd/proxyd.go +++ b/proxyd/proxyd/proxyd.go @@ -335,8 +335,8 @@ func Start(config *Config) (*Server, func(), error) { var tracker ConsensusTracker if bgcfg.ConsensusHA { - if redisClient == nil { - log.Crit("cant start - consensus high availability requires redis") + if bgcfg.ConsensusHARedis.URL == "" { + log.Crit("must specify a consensus_ha_redis config when consensus_ha is true") } topts := make([]RedisConsensusTrackerOpt, 0) if bgcfg.ConsensusHALockPeriod > 0 { @@ -345,7 +345,11 @@ func Start(config *Config) (*Server, func(), error) { if bgcfg.ConsensusHAHeartbeatInterval > 0 { topts = append(topts, WithLockPeriod(time.Duration(bgcfg.ConsensusHAHeartbeatInterval))) } - tracker = NewRedisConsensusTracker(context.Background(), redisClient, bg, bg.Name, topts...) + consensusHARedisClient, err := NewRedisClient(bgcfg.ConsensusHARedis.URL) + if err != nil { + return nil, nil, err + } + tracker = NewRedisConsensusTracker(context.Background(), consensusHARedisClient, bg, bg.Name, topts...) copts = append(copts, WithTracker(tracker)) }