fixes a bug that connection refused error cannot be recognized correctly

Kubernetes-commit: 3cec9098020ecc168573c7ee658282954dac2a2e
This commit is contained in:
likakuli 2019-08-20 12:18:46 +08:00 committed by Kubernetes Publisher
parent f4e58ce609
commit 6a1fb71239
2 changed files with 5 additions and 11 deletions

View File

@ -22,11 +22,8 @@ import (
"fmt" "fmt"
"io" "io"
"math/rand" "math/rand"
"net"
"net/url"
"reflect" "reflect"
"sync" "sync"
"syscall"
"time" "time"
apierrs "k8s.io/apimachinery/pkg/api/errors" apierrs "k8s.io/apimachinery/pkg/api/errors"
@ -35,6 +32,7 @@ import (
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/clock" "k8s.io/apimachinery/pkg/util/clock"
"k8s.io/apimachinery/pkg/util/naming" "k8s.io/apimachinery/pkg/util/naming"
utilnet "k8s.io/apimachinery/pkg/util/net"
utilruntime "k8s.io/apimachinery/pkg/util/runtime" utilruntime "k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/apimachinery/pkg/util/wait" "k8s.io/apimachinery/pkg/util/wait"
"k8s.io/apimachinery/pkg/watch" "k8s.io/apimachinery/pkg/watch"
@ -285,13 +283,9 @@ func (r *Reflector) ListAndWatch(stopCh <-chan struct{}) error {
// It doesn't make sense to re-list all objects because most likely we will be able to restart // It doesn't make sense to re-list all objects because most likely we will be able to restart
// watch where we ended. // watch where we ended.
// If that's the case wait and resend watch request. // If that's the case wait and resend watch request.
if urlError, ok := err.(*url.Error); ok { if utilnet.IsConnectionRefused(err) {
if opError, ok := urlError.Err.(*net.OpError); ok { time.Sleep(time.Second)
if errno, ok := opError.Err.(syscall.Errno); ok && errno == syscall.ECONNREFUSED { continue
time.Sleep(time.Second)
continue
}
}
} }
return nil return nil
} }

View File

@ -24,7 +24,7 @@ import (
"testing" "testing"
"time" "time"
v1 "k8s.io/api/core/v1" "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/wait" "k8s.io/apimachinery/pkg/util/wait"