You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by li...@apache.org on 2023/09/04 06:04:59 UTC

[dubbo-go] branch main updated: refactor: simplify configuration when enable metrics (#2408)

This is an automated email from the ASF dual-hosted git repository.

liujun pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/dubbo-go.git


The following commit(s) were added to refs/heads/main by this push:
     new 314b09d5e refactor: simplify configuration when enable metrics (#2408)
314b09d5e is described below

commit 314b09d5edb8d21ada1de0a4cd59f84b56b85d71
Author: Wang Guan <wg...@gmail.com>
AuthorDate: Mon Sep 4 14:04:53 2023 +0800

    refactor: simplify configuration when enable metrics (#2408)
---
 common/constant/default.go    | 2 +-
 config/reference_config.go    | 7 +++++++
 config/service_config.go      | 7 +++++++
 config/service_config_test.go | 2 +-
 4 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/common/constant/default.go b/common/constant/default.go
index 8f5ca5584..a27da2f4d 100644
--- a/common/constant/default.go
+++ b/common/constant/default.go
@@ -59,7 +59,7 @@ const (
 	// DefaultServiceFilters defines default service filters, it is highly recommended
 	// that put the AdaptiveServiceProviderFilterKey at the end.
 	DefaultServiceFilters = EchoFilterKey + "," +
-		MetricsFilterKey + "," + TokenFilterKey + "," + AccessLogFilterKey + "," + TpsLimitFilterKey + "," +
+		TokenFilterKey + "," + AccessLogFilterKey + "," + TpsLimitFilterKey + "," +
 		GenericServiceFilterKey + "," + ExecuteLimitFilterKey + "," + GracefulShutdownProviderFilterKey
 
 	DefaultReferenceFilters = GracefulShutdownConsumerFilterKey
diff --git a/config/reference_config.go b/config/reference_config.go
index 06797a8ec..64d7c53a3 100644
--- a/config/reference_config.go
+++ b/config/reference_config.go
@@ -74,6 +74,7 @@ type ReferenceConfig struct {
 	TracingKey       string `yaml:"tracing-key" json:"tracing-key,omitempty" propertiy:"tracing-key"`
 	rootConfig       *RootConfig
 	metaDataType     string
+	metricsEnable    bool
 	MeshProviderPort int `yaml:"mesh-provider-port" json:"mesh-provider-port,omitempty" propertiy:"mesh-provider-port"`
 }
 
@@ -118,6 +119,9 @@ func (rc *ReferenceConfig) Init(root *RootConfig) error {
 	if rc.TracingKey == "" {
 		rc.TracingKey = root.Consumer.TracingKey
 	}
+	if root.Metric.Enable != nil {
+		rc.metricsEnable = *root.Metric.Enable
+	}
 	if rc.Check == nil {
 		rc.Check = &root.Consumer.Check
 	}
@@ -355,6 +359,9 @@ func (rc *ReferenceConfig) getURLMap() url.Values {
 	if rc.Generic != "" {
 		defaultReferenceFilter = constant.GenericFilterKey + "," + defaultReferenceFilter
 	}
+	if rc.metricsEnable {
+		defaultReferenceFilter += fmt.Sprintf(",%s", constant.MetricsFilterKey)
+	}
 	urlMap.Set(constant.ReferenceFilterKey, mergeValue(rc.Filter, "", defaultReferenceFilter))
 
 	for _, v := range rc.Methods {
diff --git a/config/service_config.go b/config/service_config.go
index 976071a2b..1b0038ed0 100644
--- a/config/service_config.go
+++ b/config/service_config.go
@@ -82,6 +82,7 @@ type ServiceConfig struct {
 	RCRegistriesMap map[string]*RegistryConfig
 	ProxyFactoryKey string
 	adaptiveService bool
+	metricsEnable   bool // whether append metrics filter to filter chain
 	unexported      *atomic.Bool
 	exported        *atomic.Bool
 	export          bool // a flag to control whether the current service should export or not
@@ -144,6 +145,9 @@ func (s *ServiceConfig) Init(rc *RootConfig) error {
 	if s.TracingKey == "" {
 		s.TracingKey = rc.Provider.TracingKey
 	}
+	if rc.Metric.Enable != nil {
+		s.metricsEnable = *rc.Metric.Enable
+	}
 	err := s.check()
 	if err != nil {
 		panic(err)
@@ -427,6 +431,9 @@ func (s *ServiceConfig) getUrlMap() url.Values {
 	if s.adaptiveService {
 		filters += fmt.Sprintf(",%s", constant.AdaptiveServiceProviderFilterKey)
 	}
+	if s.metricsEnable {
+		filters += fmt.Sprintf(",%s", constant.MetricsFilterKey)
+	}
 	urlMap.Set(constant.ServiceFilterKey, filters)
 
 	// filter special config
diff --git a/config/service_config_test.go b/config/service_config_test.go
index da6b5af0d..4f5954acf 100644
--- a/config/service_config_test.go
+++ b/config/service_config_test.go
@@ -114,7 +114,7 @@ func TestNewServiceConfigBuilder(t *testing.T) {
 		values := serviceConfig.getUrlMap()
 		assert.Equal(t, values.Get("methods.Say.weight"), "0")
 		assert.Equal(t, values.Get("methods.Say.tps.limit.rate"), "")
-		assert.Equal(t, values.Get(constant.ServiceFilterKey), "echo,metrics,token,accesslog,tps,generic_service,execute,pshutdown")
+		assert.Equal(t, values.Get(constant.ServiceFilterKey), "echo,token,accesslog,tps,generic_service,execute,pshutdown")
 	})
 
 	t.Run("Implement", func(t *testing.T) {