From ab5c9bddaa1d3860837cce2e6dc8b3714a296bd3 Mon Sep 17 00:00:00 2001 From: Manish R Jain <manishrjain@gmail.com> Date: Fri, 26 Feb 2016 14:53:52 +1100 Subject: [PATCH] Retry on connection refused --- conn/pool.go | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/conn/pool.go b/conn/pool.go index dd2c8d64..b8aa1305 100644 --- a/conn/pool.go +++ b/conn/pool.go @@ -3,6 +3,8 @@ package conn import ( "net" "net/rpc" + "strings" + "time" "github.com/dgraph-io/dgraph/x" ) @@ -28,7 +30,24 @@ func NewPool(addr string, maxCap int) *Pool { } func (p *Pool) dialNew() (*rpc.Client, error) { - nconn, err := net.Dial("tcp", p.addr) + d := &net.Dialer{ + Timeout: 3 * time.Minute, + } + var nconn net.Conn + var err error + for i := 0; i < 10; i++ { + nconn, err = d.Dial("tcp", p.addr) + if err == nil { + break + } + if !strings.Contains(err.Error(), "refused") { + break + } + + glog.WithField("error", err).WithField("addr", p.addr). + Info("Retrying connection...") + time.Sleep(10 * time.Second) + } if err != nil { return nil, err } -- GitLab