This is an automated email from the ASF dual-hosted git repository.

alexstocks pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/dubbo-go.git


The following commit(s) were added to refs/heads/develop by this push:
     new e1d4d72d9 feat: replace application use of config package to global 
package in directory of registry (#2942)
e1d4d72d9 is described below

commit e1d4d72d9eb20821b9f508be92bd214c6ea64f55
Author: Sirui Huang <[email protected]>
AuthorDate: Wed Aug 6 13:47:27 2025 +0800

    feat: replace application use of config package to global package in 
directory of registry (#2942)
    
    * handle SonarQubeCould AI bot warning
    
    * 和项目主分支非修改部分保持一致
    
    * fix the problem about registry/nacos/service_discovery_test.go:123:39: 
undefined: protocol (typecheck)
    
    * fix the bug
    
    * change protocol to base
    
    * replace the dependencies on the config package of directory
    
    * change
    
    * Fix: Apply go fmt formatting
    
    * add setAttribute
    
    * show a way to set applicationConfig
    
    * style: go fmt
    
    * Remove unnecessary blank lines
---
 registry/directory/directory.go      | 27 +++++++++++++++++++++++++--
 registry/directory/directory_test.go | 16 ++++++++--------
 2 files changed, 33 insertions(+), 10 deletions(-)

diff --git a/registry/directory/directory.go b/registry/directory/directory.go
index d757a8387..2d159cb07 100644
--- a/registry/directory/directory.go
+++ b/registry/directory/directory.go
@@ -42,6 +42,7 @@ import (
        "dubbo.apache.org/dubbo-go/v3/config"
        "dubbo.apache.org/dubbo-go/v3/config_center"
        _ "dubbo.apache.org/dubbo-go/v3/config_center/configurator"
+       "dubbo.apache.org/dubbo-go/v3/global"
        "dubbo.apache.org/dubbo-go/v3/metrics"
        metricsRegistry "dubbo.apache.org/dubbo-go/v3/metrics/registry"
        protocolbase "dubbo.apache.org/dubbo-go/v3/protocol/base"
@@ -81,6 +82,15 @@ func NewRegistryDirectory(url *common.URL, registry 
registry.Registry) (director
                return nil, perrors.Errorf("url is invalid, suburl can not be 
nil")
        }
        logger.Debugf("new RegistryDirectory for service :%s.", url.Key())
+
+       if _, ok := url.GetAttribute(constant.ApplicationKey); !ok {
+               application := config.GetRootConfig().Application
+               if application == nil {
+                       defaultAppConfig := global.DefaultApplicationConfig()
+                       url.SetAttribute(constant.ApplicationKey, 
defaultAppConfig)
+               }
+       }
+
        dir := &RegistryDirectory{
                Directory:        base.NewDirectory(url),
                cacheInvokers:    []protocolbase.Invoker{},
@@ -97,7 +107,7 @@ func NewRegistryDirectory(url *common.URL, registry 
registry.Registry) (director
                logger.Warnf("fail to create router chain with url: %s, err is: 
%v", url.SubURL, err)
        }
 
-       dir.consumerConfigurationListener = 
newConsumerConfigurationListener(dir)
+       dir.consumerConfigurationListener = 
newConsumerConfigurationListener(dir, url)
        dir.consumerConfigurationListener.addNotifyListener(dir)
        dir.referenceConfigurationListener = 
newReferenceConfigurationListener(dir, url)
 
@@ -575,14 +585,27 @@ type consumerConfigurationListener struct {
        directory *RegistryDirectory
 }
 
-func newConsumerConfigurationListener(dir *RegistryDirectory) 
*consumerConfigurationListener {
+func newConsumerConfigurationListener(dir *RegistryDirectory, url *common.URL) 
*consumerConfigurationListener {
        listener := &consumerConfigurationListener{directory: dir}
+
+       // TODO: Temporary compatibility with old APIs, can be removed later
        application := config.GetRootConfig().Application
        listener.InitWith(
                application.Name+constant.ConfiguratorSuffix,
                listener,
                extension.GetDefaultConfiguratorFunc(),
        )
+
+       if ApplicationConfRaw, ok := url.GetAttribute(constant.ApplicationKey); 
ok {
+               if ApplicationConfig, ok := 
ApplicationConfRaw.(*global.ApplicationConfig); ok {
+                       listener.InitWith(
+                               
ApplicationConfig.Name+constant.ConfiguratorSuffix,
+                               listener,
+                               extension.GetDefaultConfiguratorFunc(),
+                       )
+               }
+       }
+
        return listener
 }
 
diff --git a/registry/directory/directory_test.go 
b/registry/directory/directory_test.go
index 60449d414..22cf34e09 100644
--- a/registry/directory/directory_test.go
+++ b/registry/directory/directory_test.go
@@ -33,19 +33,13 @@ import (
        "dubbo.apache.org/dubbo-go/v3/common"
        "dubbo.apache.org/dubbo-go/v3/common/constant"
        "dubbo.apache.org/dubbo-go/v3/common/extension"
-       "dubbo.apache.org/dubbo-go/v3/config"
+       "dubbo.apache.org/dubbo-go/v3/global"
        "dubbo.apache.org/dubbo-go/v3/protocol/invocation"
        "dubbo.apache.org/dubbo-go/v3/protocol/protocolwrapper"
        "dubbo.apache.org/dubbo-go/v3/registry"
        "dubbo.apache.org/dubbo-go/v3/remoting"
 )
 
-func init() {
-       config.SetRootConfig(config.RootConfig{
-               Application: &config.ApplicationConfig{Name: 
"test-application"},
-       })
-}
-
 func TestSubscribe(t *testing.T) {
        registryDirectory, _ := normalRegistryDir()
 
@@ -159,7 +153,13 @@ func Test_RefreshUrl(t *testing.T) {
 func normalRegistryDir(noMockEvent ...bool) (*RegistryDirectory, 
*registry.MockRegistry) {
        extension.SetProtocol(protocolwrapper.FILTER, 
protocolwrapper.NewMockProtocolFilter)
 
-       url, _ := common.NewURL("mock://127.0.0.1:1111")
+       applicationConfig := &global.ApplicationConfig{
+               Name: "test-application",
+       }
+
+       url, _ := common.NewURL("mock://127.0.0.1:1111",
+               common.WithAttribute(constant.ApplicationKey, 
applicationConfig),
+       )
        suburl, _ := common.NewURL(
                "dubbo://127.0.0.1:20000/org.apache.dubbo-go.mockService",
                common.WithParamsValue(constant.ClusterKey, "mock"),

Reply via email to