From c884f6692acff071dc0378d76448ac4b2b8d75d2 Mon Sep 17 00:00:00 2001
From: Joe Zou <yixian.zou@gmail.com>
Date: Sat, 22 Feb 2020 22:29:38 +0800
Subject: [PATCH] change init router to config.Load()

---
 cluster/directory/base_directory.go |  2 +-
 config/config_loader.go             | 17 ++++++++++-------
 2 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/cluster/directory/base_directory.go b/cluster/directory/base_directory.go
index ce5a09be9..c64ac3e12 100644
--- a/cluster/directory/base_directory.go
+++ b/cluster/directory/base_directory.go
@@ -83,7 +83,7 @@ func (dir *BaseDirectory) SetRouters(urls []*common.URL) {
 		return
 	}
 
-	routers := make([]router.Router, len(urls), len(urls))
+	routers := make([]router.Router, 0, len(urls))
 
 	for _, url := range urls {
 		routerKey := url.GetParam(constant.ROUTER_KEY, "")
diff --git a/config/config_loader.go b/config/config_loader.go
index ee8f158da..437f4d732 100644
--- a/config/config_loader.go
+++ b/config/config_loader.go
@@ -36,15 +36,15 @@ var (
 	metricConfig      *MetricConfig
 	applicationConfig *ApplicationConfig
 	maxWait           = 3
+	confRouterFile    string
 )
 
 // loaded consumer & provider config from xxx.yml, and log config from xxx.xml
 // Namely: dubbo.consumer.xml & dubbo.provider.xml in java dubbo
 func init() {
 	var (
-		confConFile    string
-		confProFile    string
-		confRouterFile string
+		confConFile string
+		confProFile string
 	)
 
 	confConFile = os.Getenv(constant.CONF_CONSUMER_FILE_PATH)
@@ -60,10 +60,6 @@ func init() {
 		log.Printf("[providerInit] %#v", errPro)
 		providerConfig = nil
 	}
-
-	if errPro := RouterInit(confRouterFile); errPro != nil {
-		log.Printf("[routerConfig] %#v", errPro)
-	}
 }
 
 func checkRegistries(registries map[string]*RegistryConfig, singleRegistry *RegistryConfig) {
@@ -82,6 +78,13 @@ func checkApplicationName(config *ApplicationConfig) {
 
 // Load Dubbo Init
 func Load() {
+	// init router
+	if confRouterFile != "" {
+		if errPro := RouterInit(confRouterFile); errPro != nil {
+			log.Printf("[routerConfig init] %#v", errPro)
+		}
+	}
+
 	// reference config
 	if consumerConfig == nil {
 		logger.Warnf("consumerConfig is nil!")
-- 
GitLab