diff --git a/common/constant/default.go b/common/constant/default.go index 992fc32748bb4fc7777cffecc9137663c681c3f7..8ed645e84a724531080eff6efe5fdb0df5479e80 100644 --- a/common/constant/default.go +++ b/common/constant/default.go @@ -66,6 +66,7 @@ const ( DYNAMIC_CONFIGURATORS_CATEGORY = "dynamicconfigurators" APP_DYNAMIC_CONFIGURATORS_CATEGORY = "appdynamicconfigurators" PROVIDER_CATEGORY = "providers" + CONSUMER_CATEGORY = "consumers" ) const ( diff --git a/config/config_loader.go b/config/config_loader.go index 875d1f6ddb84434d32296076cd31be96c1385b8a..d6be98b67d0ca1494082201ba2d0b06202cb357c 100644 --- a/config/config_loader.go +++ b/config/config_loader.go @@ -195,20 +195,20 @@ func GetApplicationConfig() *ApplicationConfig { // GetProviderConfig find the provider config // if not found, create new one -func GetProviderConfig() ProviderConfig { +func GetProviderConfig() *ProviderConfig { if providerConfig == nil { logger.Warnf("providerConfig is nil!") - return ProviderConfig{} + return &ProviderConfig{} } - return *providerConfig + return providerConfig } // GetConsumerConfig find the consumer config // if not found, create new one -func GetConsumerConfig() ConsumerConfig { +func GetConsumerConfig() *ConsumerConfig { if consumerConfig == nil { logger.Warnf("consumerConfig is nil!") - return ConsumerConfig{} + return &ConsumerConfig{} } - return *consumerConfig + return consumerConfig } diff --git a/config/config_loader_test.go b/config/config_loader_test.go index 498f82678070d194e3ffe1539064be7aec19f719..a25cccec4951818b21cd40d3d4cd5a32b87fdaa8 100644 --- a/config/config_loader_test.go +++ b/config/config_loader_test.go @@ -43,9 +43,9 @@ func TestConfigLoader(t *testing.T) { assert.NoError(t, err) assert.Nil(t, consumerConfig) - assert.Equal(t, ConsumerConfig{}, GetConsumerConfig()) + assert.Equal(t, &ConsumerConfig{}, GetConsumerConfig()) assert.Nil(t, providerConfig) - assert.Equal(t, ProviderConfig{}, GetProviderConfig()) + assert.Equal(t, &ProviderConfig{}, GetProviderConfig()) err = ConsumerInit(conPath) assert.NoError(t, err) @@ -53,9 +53,9 @@ func TestConfigLoader(t *testing.T) { assert.NoError(t, err) assert.NotNil(t, consumerConfig) - assert.NotEqual(t, ConsumerConfig{}, GetConsumerConfig()) + assert.NotEqual(t, &ConsumerConfig{}, GetConsumerConfig()) assert.NotNil(t, providerConfig) - assert.NotEqual(t, ProviderConfig{}, GetProviderConfig()) + assert.NotEqual(t, &ProviderConfig{}, GetProviderConfig()) assert.Equal(t, "soa.com.ikurento.user.UserProvider", GetConsumerConfig().References["UserProvider"].Params["serviceid"]) } @@ -155,9 +155,9 @@ func TestConfigLoaderWithConfigCenter(t *testing.T) { assert.NoError(t, err) assert.Nil(t, consumerConfig) - assert.Equal(t, ConsumerConfig{}, GetConsumerConfig()) + assert.Equal(t, &ConsumerConfig{}, GetConsumerConfig()) assert.Nil(t, providerConfig) - assert.Equal(t, ProviderConfig{}, GetProviderConfig()) + assert.Equal(t, &ProviderConfig{}, GetProviderConfig()) err = ConsumerInit(conPath) configCenterRefreshConsumer() @@ -167,9 +167,9 @@ func TestConfigLoaderWithConfigCenter(t *testing.T) { assert.NoError(t, err) assert.NotNil(t, consumerConfig) - assert.NotEqual(t, ConsumerConfig{}, GetConsumerConfig()) + assert.NotEqual(t, &ConsumerConfig{}, GetConsumerConfig()) assert.NotNil(t, providerConfig) - assert.NotEqual(t, ProviderConfig{}, GetProviderConfig()) + assert.NotEqual(t, &ProviderConfig{}, GetProviderConfig()) assert.Equal(t, "BDTService", consumerConfig.ApplicationConfig.Name) assert.Equal(t, "127.0.0.1:2181", consumerConfig.Registries["hangzhouzk"].Address) @@ -208,9 +208,9 @@ func TestConfigLoaderWithConfigCenterSingleRegistry(t *testing.T) { assert.NoError(t, err) assert.Nil(t, consumerConfig) - assert.Equal(t, ConsumerConfig{}, GetConsumerConfig()) + assert.Equal(t, &ConsumerConfig{}, GetConsumerConfig()) assert.Nil(t, providerConfig) - assert.Equal(t, ProviderConfig{}, GetProviderConfig()) + assert.Equal(t, &ProviderConfig{}, GetProviderConfig()) err = ConsumerInit(conPath) checkApplicationName(consumerConfig.ApplicationConfig) @@ -224,9 +224,9 @@ func TestConfigLoaderWithConfigCenterSingleRegistry(t *testing.T) { assert.NoError(t, err) assert.NotNil(t, consumerConfig) - assert.NotEqual(t, ConsumerConfig{}, GetConsumerConfig()) + assert.NotEqual(t, &ConsumerConfig{}, GetConsumerConfig()) assert.NotNil(t, providerConfig) - assert.NotEqual(t, ProviderConfig{}, GetProviderConfig()) + assert.NotEqual(t, &ProviderConfig{}, GetProviderConfig()) assert.Equal(t, "BDTService", consumerConfig.ApplicationConfig.Name) assert.Equal(t, "mock://127.0.0.1:2182", consumerConfig.Registries[constant.DEFAULT_KEY].Address) diff --git a/remoting/zookeeper/listener.go b/remoting/zookeeper/listener.go index 4493c06dc3f13d59b9388268613fe9e08a14033e..9032e1bd029449ac45599b558d630b8abc4a8bdd 100644 --- a/remoting/zookeeper/listener.go +++ b/remoting/zookeeper/listener.go @@ -18,7 +18,9 @@ package zookeeper import ( + "github.com/apache/dubbo-go/common/constant" "path" + "strings" "sync" "time" ) @@ -256,10 +258,14 @@ func (l *ZkEventListener) listenDirEvent(zkPath string, listener remoting.DataLi }(dubboPath, listener) //listen sub path recursive - go func(zkPath string, listener remoting.DataListener) { - l.listenDirEvent(zkPath, listener) - logger.Warnf("listenDirEvent(zkPath{%s}) goroutine exit now", zkPath) - }(dubboPath, listener) + //if zkPath is end of "providers/ & consumers/" we do not listen children dir + if strings.LastIndex(zkPath, constant.PROVIDER_CATEGORY) == -1 && + strings.LastIndex(zkPath, constant.CONSUMER_CATEGORY) == -1 { + go func(zkPath string, listener remoting.DataListener) { + l.listenDirEvent(zkPath, listener) + logger.Warnf("listenDirEvent(zkPath{%s}) goroutine exit now", zkPath) + }(dubboPath, listener) + } } select { case zkEvent = <-childEventCh: