diff --git a/registry/zookeeper/registry.go b/registry/zookeeper/registry.go index 678dace4a7817c708b93298f37494ef9678d966d..ee7154fba1f9fd28a9cd7a68f5f11296802fa0d9 100644 --- a/registry/zookeeper/registry.go +++ b/registry/zookeeper/registry.go @@ -422,14 +422,15 @@ func (r *zkRegistry) Subscribe(url *common.URL, notifyListener registry.NotifyLi time.Sleep(time.Duration(RegistryConnDelay) * time.Second) continue } - + n := 0 for { + n++ if serviceEvent, err := listener.Next(); err != nil { logger.Warnf("Selector.watch() = error{%v}", perrors.WithStack(err)) - if err.Error() == "listener stopped" { + if n == 1 { + listener.Close() break } - listener.Close() break } else { logger.Infof("update begin, service event: %v", serviceEvent.String()) @@ -437,7 +438,8 @@ func (r *zkRegistry) Subscribe(url *common.URL, notifyListener registry.NotifyLi } } - time.Sleep(1e9) + logger.Infof("wait for get subscribe listener, key{%v}", url.Key()) + sleepWait(n) } } @@ -492,3 +494,10 @@ func (r *zkRegistry) IsAvailable() bool { return true } } +func sleepWait(n int) { + wait := time.Duration(200*n) * time.Millisecond + if wait > 3*time.Second { + wait = 3 * time.Second + } + time.Sleep(wait) +}