From 9cf72f8a0bc5743b90e574c958b5b22616d4ecc6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=AB=98=E8=BE=9B=E6=A0=BC?= <xg.gao@tianrang-inc.com>
Date: Thu, 19 Sep 2019 09:47:14 +0800
Subject: [PATCH] fix: skip subscribe in provider situation

---
 registry/consul/registry.go      | 20 ++++----------------
 registry/consul/registry_test.go |  2 +-
 2 files changed, 5 insertions(+), 17 deletions(-)

diff --git a/registry/consul/registry.go b/registry/consul/registry.go
index 1fd3e54e9..73bf3975b 100644
--- a/registry/consul/registry.go
+++ b/registry/consul/registry.go
@@ -111,31 +111,21 @@ func (r *consulRegistry) unregister(url common.URL) error {
 	return r.client.Agent().ServiceDeregister(buildId(url))
 }
 
-func (r *consulRegistry) subscribe(url *common.URL) (registry.Listener, error) {
-	var (
-		listener registry.Listener
-		err      error
-	)
-
+func (r *consulRegistry) Subscribe(url *common.URL, notifyListener registry.NotifyListener) {
 	role, _ := strconv.Atoi(r.URL.GetParam(constant.ROLE_KEY, ""))
 	if role == common.CONSUMER {
-		listener, err = r.getListener(*url)
-		if err != nil {
-			return nil, err
-		}
+		r.subscribe(url, notifyListener)
 	}
-	return listener, nil
 }
 
-//subscibe from registry
-func (r *consulRegistry) Subscribe(url *common.URL, notifyListener registry.NotifyListener) {
+func (r *consulRegistry) subscribe(url *common.URL, notifyListener registry.NotifyListener) {
 	for {
 		if !r.IsAvailable() {
 			logger.Warnf("event listener game over.")
 			return
 		}
 
-		listener, err := r.subscribe(url)
+		listener, err := r.getListener(*url)
 		if err != nil {
 			if !r.IsAvailable() {
 				logger.Warnf("event listener game over.")
@@ -155,9 +145,7 @@ func (r *consulRegistry) Subscribe(url *common.URL, notifyListener registry.Noti
 				logger.Infof("update begin, service event: %v", serviceEvent.String())
 				notifyListener.Notify(serviceEvent)
 			}
-
 		}
-
 	}
 }
 
diff --git a/registry/consul/registry_test.go b/registry/consul/registry_test.go
index ff8c2e231..bb6842cd8 100644
--- a/registry/consul/registry_test.go
+++ b/registry/consul/registry_test.go
@@ -51,7 +51,7 @@ func (suite *consulRegistryTestSuite) testUnregister() {
 func (suite *consulRegistryTestSuite) testSubscribe() {
 	consumerUrl := newConsumerUrl(consumerHost, consumerPort, service, protocol)
 	suite.consumerUrl = consumerUrl
-	listener, err := suite.consumerRegistry.subscribe(&consumerUrl)
+	listener, err := suite.consumerRegistry.getListener(consumerUrl)
 	assert.NoError(suite.t, err)
 	suite.listener = listener
 }
-- 
GitLab