From 446b783d8884626137f7bb4649ddede512c2fa74 Mon Sep 17 00:00:00 2001 From: ztelur Date: Mon, 8 Feb 2021 00:22:32 +0800 Subject: [PATCH] bug fix --- cmd/proxy/control.go | 8 ++++++-- pkg/config/api_config.go | 24 +++++++++++++++++++++++- samples/plugins/go.mod | 4 +--- 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/cmd/proxy/control.go b/cmd/proxy/control.go index 591aed9d2..4db470de5 100644 --- a/cmd/proxy/control.go +++ b/cmd/proxy/control.go @@ -89,12 +89,16 @@ var ( } logger.InitLog(logConfPath) + initFromRemote := false if bootstrap.GetAPIMetaConfig() != nil { if _, err := config.LoadAPIConfig(bootstrap.GetAPIMetaConfig()); err != nil { logger.Errorf("load api config from etcd error:%+v", err) - return err + } else { + initFromRemote = true } - } else { + } + + if !initFromRemote { if _, err := config.LoadAPIConfigFromFile(apiConfigPath); err != nil { logger.Errorf("load api config error:%+v", err) return err diff --git a/pkg/config/api_config.go b/pkg/config/api_config.go index f92da1a4b..d389a649f 100644 --- a/pkg/config/api_config.go +++ b/pkg/config/api_config.go @@ -81,7 +81,9 @@ func LoadAPIConfig(metaConfig *model.APIMetaConfig) (*fc.APIConfig, error) { return nil, perrors.Errorf("Get remote config fail error %v", err) } - initAPIConfigFromString(content) + if err = initAPIConfigFromString(content); err != nil { + return nil, err + } return apiConfig, nil } @@ -96,11 +98,31 @@ func initAPIConfigFromString(content string) error { if err != nil { return perrors.Errorf("unmarshalYmlConfig error %v", perrors.WithStack(err)) } + + valid := validateApiConfig(apiConf) + if !valid { + return perrors.Errorf("api config not valid error %v", perrors.WithStack(err)) + } + apiConfig = apiConf } return nil } +// validateApiConfig check api config valid +func validateApiConfig(conf *fc.APIConfig) bool { + if conf.Name == "" { + return false + } + if conf.Description == "" { + return false + } + if conf.Resources == nil || len(conf.Resources) == 0 { + return false + } + return true +} + func listenAPIConfigNodeEvent(key string) bool { for { wc, err := client.Watch(key) diff --git a/samples/plugins/go.mod b/samples/plugins/go.mod index 4b35c6e36..0f4837c51 100644 --- a/samples/plugins/go.mod +++ b/samples/plugins/go.mod @@ -2,6 +2,4 @@ module dubbo-go-proxy/samples/plugins go 1.14 -require ( - github.com/dubbogo/dubbo-go-proxy-filter v0.1.0-rc1.0.20210120132524-c63f4eb13725 //TODO -) +require github.com/dubbogo/dubbo-go-proxy-filter v0.1.0-rc1.0.20210120132524-c63f4eb13725 //TODO