diff --git a/sentinel.go b/sentinel.go index 0d61d29a..0e32986c 100644 --- a/sentinel.go +++ b/sentinel.go @@ -177,6 +177,7 @@ func NewFailoverClient(failoverOpt *FailoverOptions) *Client { opt.init() connPool := newConnPool(opt) + failover.mu.Lock() failover.onFailover = func(ctx context.Context, addr string) { _ = connPool.Filter(func(cn *pool.Conn) bool { @@ -648,6 +649,7 @@ func (c *sentinelFailover) discoverSentinels(ctx context.Context) { func (c *sentinelFailover) listen(pubsub *PubSub) { ctx := context.TODO() + if c.onUpdate != nil { c.onUpdate(ctx) } @@ -725,9 +727,12 @@ func NewFailoverClusterClient(failoverOpt *FailoverOptions) *ClusterClient { } c := NewClusterClient(opt) + + failover.mu.Lock() failover.onUpdate = func(ctx context.Context) { c.ReloadState(ctx) } + failover.mu.Unlock() return c }