From b92dacbfa7229012ae87c520ed28fab2cacf0e5c Mon Sep 17 00:00:00 2001 From: Vladimir Mihailenco Date: Sun, 22 Jul 2018 08:49:48 +0300 Subject: [PATCH] Conn timeout should be higher than read timeout --- cluster.go | 4 ++-- commands.go | 8 ++++---- pubsub.go | 2 +- redis.go | 3 +-- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/cluster.go b/cluster.go index 982dff42..fe502577 100644 --- a/cluster.go +++ b/cluster.go @@ -1274,7 +1274,7 @@ func (c *ClusterClient) remapCmds(cmds []Cmder, failedCmds map[*clusterNode][]Cm func (c *ClusterClient) pipelineProcessCmds( node *clusterNode, cn *pool.Conn, cmds []Cmder, failedCmds map[*clusterNode][]Cmder, ) error { - _ = cn.SetWriteTimeout(c.opt.WriteTimeout) + cn.SetWriteTimeout(c.opt.WriteTimeout) err := writeCmd(cn, cmds...) if err != nil { @@ -1284,7 +1284,7 @@ func (c *ClusterClient) pipelineProcessCmds( } // Set read timeout for all commands. - _ = cn.SetReadTimeout(c.opt.ReadTimeout) + cn.SetReadTimeout(c.opt.ReadTimeout) return c.pipelineReadCmds(cn, cmds, failedCmds) } diff --git a/commands.go b/commands.go index efaeb4d0..7b6c65df 100644 --- a/commands.go +++ b/commands.go @@ -421,7 +421,7 @@ func (c *cmdable) Migrate(host, port, key string, db int64, timeout time.Duratio db, formatMs(timeout), ) - cmd.setReadTimeout(readTimeout(timeout)) + cmd.setReadTimeout(timeout) c.process(cmd) return cmd } @@ -995,7 +995,7 @@ func (c *cmdable) BLPop(timeout time.Duration, keys ...string) *StringSliceCmd { } args[len(args)-1] = formatSec(timeout) cmd := NewStringSliceCmd(args...) - cmd.setReadTimeout(readTimeout(timeout)) + cmd.setReadTimeout(timeout) c.process(cmd) return cmd } @@ -1008,7 +1008,7 @@ func (c *cmdable) BRPop(timeout time.Duration, keys ...string) *StringSliceCmd { } args[len(keys)+1] = formatSec(timeout) cmd := NewStringSliceCmd(args...) - cmd.setReadTimeout(readTimeout(timeout)) + cmd.setReadTimeout(timeout) c.process(cmd) return cmd } @@ -1020,7 +1020,7 @@ func (c *cmdable) BRPopLPush(source, destination string, timeout time.Duration) destination, formatSec(timeout), ) - cmd.setReadTimeout(readTimeout(timeout)) + cmd.setReadTimeout(timeout) c.process(cmd) return cmd } diff --git a/pubsub.go b/pubsub.go index b56728f3..dbf6d1d1 100644 --- a/pubsub.go +++ b/pubsub.go @@ -309,7 +309,7 @@ func (c *PubSub) ReceiveTimeout(timeout time.Duration) (interface{}, error) { return nil, err } - cn.SetReadTimeout(timeout) + cn.SetReadTimeout(readTimeout(timeout)) err = c.cmd.readReply(cn) c.releaseConn(cn, err) if err != nil { diff --git a/redis.go b/redis.go index beb632e1..ff065148 100644 --- a/redis.go +++ b/redis.go @@ -176,9 +176,8 @@ func (c *baseClient) retryBackoff(attempt int) time.Duration { func (c *baseClient) cmdTimeout(cmd Cmder) time.Duration { if timeout := cmd.readTimeout(); timeout != nil { - return *timeout + return readTimeout(*timeout) } - return c.opt.ReadTimeout }