From 8a17274d81de569b3615c8542037947270f70730 Mon Sep 17 00:00:00 2001 From: Joe Zou <yixian.zou@gmail.com> Date: Sun, 26 Jan 2020 19:19:10 +0800 Subject: [PATCH] fix file config init invliad --- cluster/directory/base_directory.go | 7 +++++++ cluster/router/condition/listenable_router.go | 7 ++++--- config/condition_router_config.go | 1 + registry/directory/directory.go | 5 +++++ 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/cluster/directory/base_directory.go b/cluster/directory/base_directory.go index af6ee8a65..5ea985821 100644 --- a/cluster/directory/base_directory.go +++ b/cluster/directory/base_directory.go @@ -31,8 +31,11 @@ import ( "github.com/apache/dubbo-go/common" "github.com/apache/dubbo-go/common/constant" "github.com/apache/dubbo-go/common/extension" + "github.com/dubbogo/gost/container/set" ) +var routerURLSet = gxset.NewSet() + // BaseDirectory ... type BaseDirectory struct { url *common.URL @@ -102,3 +105,7 @@ func (dir *BaseDirectory) Destroy(doDestroy func()) { func (dir *BaseDirectory) IsAvailable() bool { return !dir.destroyed.Load() } + +func GetRouterURLSet() *gxset.HashSet { + return routerURLSet +} diff --git a/cluster/router/condition/listenable_router.go b/cluster/router/condition/listenable_router.go index 92ac84694..95a7511eb 100644 --- a/cluster/router/condition/listenable_router.go +++ b/cluster/router/condition/listenable_router.go @@ -55,7 +55,7 @@ func (l *listenableRouter) RouterRule() *RouterRule { func newListenableRouter(url *common.URL, ruleKey string) (*AppRouter, error) { if ruleKey == "" { - return nil, perrors.Errorf("newListenableRouter ruleKey is nil, can't create Listenable router") + return nil, perrors.Errorf("NewListenableRouter ruleKey is nil, can't create Listenable router") } l := &AppRouter{} @@ -66,20 +66,21 @@ func newListenableRouter(url *common.URL, ruleKey string) (*AppRouter, error) { //add listener dynamicConfiguration := config.GetEnvInstance().GetDynamicConfiguration() if dynamicConfiguration == nil { - return nil, perrors.Errorf("get dynamicConfiguration fail, dynamicConfiguration is nil, init config center plugin please") + return nil, perrors.Errorf("Get dynamicConfiguration fail, dynamicConfiguration is nil, init config center plugin please") } dynamicConfiguration.AddListener(routerKey, l) //get rule rule, err := dynamicConfiguration.GetRule(routerKey, config_center.WithGroup(config_center.DEFAULT_GROUP)) if len(rule) == 0 || err != nil { - return nil, perrors.Errorf("get rule fail, config rule{%s}, error{%v}", rule, err) + return nil, perrors.Errorf("Get rule fail, config rule{%s}, error{%v}", rule, err) } l.Process(&config_center.ConfigChangeEvent{ Key: routerKey, Value: rule, ConfigType: remoting.EventTypeUpdate}) + logger.Info("Init app router success") return l, nil } diff --git a/config/condition_router_config.go b/config/condition_router_config.go index b073621fc..2fb02c951 100644 --- a/config/condition_router_config.go +++ b/config/condition_router_config.go @@ -58,6 +58,7 @@ func RouterInit(confRouterFile string) error { } logger.Debugf("router config{%#v}\n", routerConfig) + directory.GetRouterURLSet().Add(initRouterUrl()) return nil } diff --git a/registry/directory/directory.go b/registry/directory/directory.go index 6a43319b2..2b2f8503a 100644 --- a/registry/directory/directory.go +++ b/registry/directory/directory.go @@ -134,6 +134,10 @@ func (dir *registryDirectory) refreshInvokers(res *registry.ServiceEvent) { dirUrl := &res.Service var urls []*common.URL + for _, v := range directory.GetRouterURLSet().Values() { + urls = append(urls, v.(*common.URL)) + } + for _, v := range dirUrl.GetBackupUrls() { p := v.Protocol category := v.GetParam(constant.CATEGORY_KEY, constant.PROVIDERS_CATEGORY) @@ -144,6 +148,7 @@ func (dir *registryDirectory) refreshInvokers(res *registry.ServiceEvent) { if len(urls) > 0 { routers := toRouters(urls) + logger.Infof("Init file condition router success, size: %v", len(routers)) if len(routers) > 0 { dir.SetRouters(routers) } -- GitLab