client: reconnect more quickly if it's a dial error (#2240)

This commit is contained in:
fatedier
2021-02-18 16:15:35 +08:00
committed by GitHub
parent 976fd81d4d
commit 8fcd4f4a95
9 changed files with 20 additions and 14 deletions

View File

@ -17,6 +17,7 @@ package client
import (
"context"
"crypto/tls"
"errors"
"fmt"
"io/ioutil"
"net"
@ -177,9 +178,16 @@ func (svr *Service) keepControllerWorking() {
if err != nil {
xl.Warn("reconnect to server error: %v", err)
time.Sleep(delayTime)
delayTime = delayTime * 2
if delayTime > maxDelayTime {
delayTime = maxDelayTime
opErr := &net.OpError{}
// quick retry for dial error
if errors.As(err, &opErr) && opErr.Op == "dial" {
delayTime = 2 * time.Second
} else {
delayTime = delayTime * 2
if delayTime > maxDelayTime {
delayTime = maxDelayTime
}
}
continue
}