From ce5751ba6d14252c19feefd1f9f106a2d08cfca7 Mon Sep 17 00:00:00 2001
From: Patrick <dreamlike.sky@foxmail.com>
Date: Mon, 17 Aug 2020 01:02:37 +0800
Subject: [PATCH] when don't has metadataService ignore this error

---
 common/extension/metadata_service.go | 7 +++++--
 config/config_loader.go              | 7 +++----
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/common/extension/metadata_service.go b/common/extension/metadata_service.go
index 1823273b8..e35677d14 100644
--- a/common/extension/metadata_service.go
+++ b/common/extension/metadata_service.go
@@ -21,6 +21,10 @@ import (
 	"fmt"
 )
 
+import (
+	perrors "github.com/pkg/errors"
+)
+
 import (
 	"github.com/apache/dubbo-go/metadata/service"
 )
@@ -36,12 +40,11 @@ func SetMetadataService(msType string, creator func() (service.MetadataService,
 }
 
 // GetMetadataService will create a MetadataService instance
-// it will panic if msType not found
 func GetMetadataService(msType string) (service.MetadataService, error) {
 	if creator, ok := metadataServiceInsMap[msType]; ok {
 		return creator()
 	}
-	panic(fmt.Sprintf("could not find the metadata service creator for metadataType: %s, please check whether you have imported relative packages, \n"+
+	return nil, perrors.New(fmt.Sprintf("could not find the metadata service creator for metadataType: %s, please check whether you have imported relative packages, \n"+
 		"local - github.com/apache/dubbo-go/metadata/service/inmemory, \n"+
 		"remote - github.com/apache/dubbo-go/metadata/service/remote", msType))
 }
diff --git a/config/config_loader.go b/config/config_loader.go
index f7703e539..ec935346f 100644
--- a/config/config_loader.go
+++ b/config/config_loader.go
@@ -277,7 +277,8 @@ func selectMetadataServiceExportedURL() *common.URL {
 	var selectedUrl common.URL
 	metaDataService, err := extension.GetMetadataService(GetApplicationConfig().MetadataType)
 	if err != nil {
-		panic(err)
+		logger.Warn(err)
+		return nil
 	}
 	list, err := metaDataService.GetExportedURLs(constant.ANY_VALUE, constant.ANY_VALUE, constant.ANY_VALUE, constant.ANY_VALUE)
 	if err != nil {
@@ -292,12 +293,10 @@ func selectMetadataServiceExportedURL() *common.URL {
 			logger.Errorf("url format error {%v}", url)
 			continue
 		}
+		selectedUrl = url
 		// rest first
 		if url.Protocol == "rest" {
-			selectedUrl = url
 			break
-		} else {
-			selectedUrl = url
 		}
 	}
 	return &selectedUrl
-- 
GitLab