diff --git a/cluster/directory/base_directory.go b/cluster/directory/base_directory.go index af6ee8a6580b6f4b60868ef6a7908e2b06fb6ea4..5ea9858214f16e53e72934a59853a04a0207fd6e 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 92ac84694c96fe42b0c068e8e0387f3d46860d49..95a7511eb1950c173c3634097064611b246839d7 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 b073621fcdfcc619be83ad664e726dbe5c7a7a71..2fb02c951be788e4d5a8801e0bb76eba856c9892 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 6a43319b2c0ee333c771feedbe9882dfbdf3dd2f..2b2f8503af3a21faec52f38a88ac29b5031f2cf2 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) }