From f8e2e89878e3b531c5d1606c1c4bbfbb678f3a8b Mon Sep 17 00:00:00 2001 From: Vladimir Mihailenco Date: Thu, 21 May 2020 09:34:51 +0300 Subject: [PATCH] Add ClusterOptions.NewClient hook Replaces https://github.com/go-redis/redis/pull/1316 --- cluster.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/cluster.go b/cluster.go index 77c4f922..1907de6c 100644 --- a/cluster.go +++ b/cluster.go @@ -68,6 +68,9 @@ type ClusterOptions struct { ReadTimeout time.Duration WriteTimeout time.Duration + // NewClient creates a cluster node client with provided name and options. + NewClient func(opt *Options) *Client + // PoolSize applies per cluster node and not for the whole cluster. PoolSize int MinIdleConns int @@ -77,7 +80,6 @@ type ClusterOptions struct { IdleCheckFrequency time.Duration TLSConfig *tls.Config - Limiter Limiter } func (opt *ClusterOptions) init() { @@ -120,6 +122,10 @@ func (opt *ClusterOptions) init() { case 0: opt.MaxRetryBackoff = 512 * time.Millisecond } + + if opt.NewClient == nil { + opt.NewClient = NewClient + } } func (opt *ClusterOptions) clientOptions() *Options { @@ -148,7 +154,6 @@ func (opt *ClusterOptions) clientOptions() *Options { IdleCheckFrequency: disableIdleCheck, TLSConfig: opt.TLSConfig, - Limiter: opt.Limiter, } } @@ -166,7 +171,7 @@ func newClusterNode(clOpt *ClusterOptions, addr string) *clusterNode { opt := clOpt.clientOptions() opt.Addr = addr node := clusterNode{ - Client: NewClient(opt), + Client: clOpt.NewClient(opt), } node.latency = math.MaxUint32