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"),