From 0dea341edcc4aa8c8b7646f0ba3ead79ee0e8a56 Mon Sep 17 00:00:00 2001 From: Joe Zou <yixian.zou@gmail.com> Date: Mon, 18 May 2020 18:19:30 +0800 Subject: [PATCH] fix review comments --- registry/base_registry.go | 37 +++++++++++++++++++++++++++---------- registry/mock_registry.go | 1 - 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/registry/base_registry.go b/registry/base_registry.go index 3a9569740..8c62062cd 100644 --- a/registry/base_registry.go +++ b/registry/base_registry.go @@ -380,9 +380,32 @@ func (r *BaseRegistry) Subscribe(url *common.URL, notifyListener NotifyListener) n := 0 for { n++ - err := r.processNotify(url, notifyListener, r.facadeBasedRegistry.DoSubscribe) - if err == nil { - return nil + if !r.IsAvailable() { + logger.Warnf("event listener game over.") + return perrors.New("nacosRegistry is not available.") + } + + listener, err := r.facadeBasedRegistry.DoSubscribe(url) + if err != nil { + if !r.IsAvailable() { + logger.Warnf("event listener game over.") + return err + } + logger.Warnf("getListener() = err:%v", perrors.WithStack(err)) + time.Sleep(time.Duration(RegistryConnDelay) * time.Second) + continue + } + + for { + if serviceEvent, err := listener.Next(); err != nil { + logger.Warnf("Selector.watch() = error{%v}", perrors.WithStack(err)) + listener.Close() + break + } else { + logger.Infof("update begin, service event: %v", serviceEvent.String()) + notifyListener.Notify(serviceEvent) + } + } sleepWait(n) } @@ -390,18 +413,12 @@ func (r *BaseRegistry) Subscribe(url *common.URL, notifyListener NotifyListener) // UnSubscribe :UnSubscribeURL func (r *BaseRegistry) UnSubscribe(url *common.URL, notifyListener NotifyListener) error { - return r.processNotify(url, notifyListener, r.facadeBasedRegistry.DoUnsubscribe) -} - -// processNotify can process notify listener when Subscribe or UnSubscribe -func (r *BaseRegistry) processNotify(url *common.URL, notifyListener NotifyListener, f func(conf *common.URL) (Listener, error)) error { - if !r.IsAvailable() { logger.Warnf("event listener game over.") return nil } - listener, err := f(url) + listener, err := r.facadeBasedRegistry.DoUnsubscribe(url) if err != nil { if !r.IsAvailable() { logger.Warnf("event listener game over.") diff --git a/registry/mock_registry.go b/registry/mock_registry.go index ddf445ac8..f39490a26 100644 --- a/registry/mock_registry.go +++ b/registry/mock_registry.go @@ -53,7 +53,6 @@ func (*MockRegistry) Register(url common.URL) error { // UnRegister func (r *MockRegistry) UnRegister(conf common.URL) error { - return nil } -- GitLab