You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by so...@apache.org on 2023/06/07 10:54:28 UTC

[dubbo] branch 3.2 updated: add metrics enable switch (#12389)

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

songxiaosheng pushed a commit to branch 3.2
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/3.2 by this push:
     new c4702142bf add metrics enable switch (#12389)
c4702142bf is described below

commit c4702142bffaf39d8a58578c35de89db65cf7bb6
Author: TomlongTK <lo...@maoyan.com>
AuthorDate: Wed Jun 7 18:54:20 2023 +0800

    add metrics enable switch (#12389)
    
    * add metrics enable switch
    
    * default false
    
    * default false
    
    * set default true and fix unit test
    
    * xsd set default true
    
    * rename enabled to enableRpc
    
    * make enableRpc default value to true
    
    * fix camel name
    
    * remove default value
    
    ---------
    
    Co-authored-by: songxiaosheng <so...@elastic.link>
---
 .../java/org/apache/dubbo/config/MetricsConfig.java   |  9 +++++++++
 .../src/main/resources/META-INF/dubbo.xsd             |  6 ++++++
 .../apache/dubbo/metrics/filter/MetricsFilter.java    | 19 +++++++++++--------
 .../dubbo/metrics/filter/MetricsFilterTest.java       |  1 -
 4 files changed, 26 insertions(+), 9 deletions(-)

diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/MetricsConfig.java b/dubbo-common/src/main/java/org/apache/dubbo/config/MetricsConfig.java
index a7540dc63e..067833b2b0 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/MetricsConfig.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/MetricsConfig.java
@@ -92,6 +92,7 @@ public class MetricsConfig extends AbstractConfig {
      */
     private Boolean useGlobalRegistry;
 
+    private Boolean enableRpc;
 
     public MetricsConfig() {
     }
@@ -214,4 +215,12 @@ public class MetricsConfig extends AbstractConfig {
     public void setUseGlobalRegistry(Boolean useGlobalRegistry) {
         this.useGlobalRegistry = useGlobalRegistry;
     }
+
+    public Boolean getEnableRpc() {
+        return enableRpc;
+    }
+
+    public void setEnableRpc(Boolean enableRpc) {
+        this.enableRpc = enableRpc;
+    }
 }
diff --git a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd
index ff36236df0..73e059465a 100644
--- a/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd
+++ b/dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsd
@@ -1098,6 +1098,12 @@
                 <xsd:documentation><![CDATA[ Deprecated. No longer use. ]]></xsd:documentation>
             </xsd:annotation>
         </xsd:attribute>
+
+        <xsd:attribute name="enable-rpc" type="xsd:boolean" default="true">
+            <xsd:annotation>
+                <xsd:documentation><![CDATA[ Enable record rpc metrics. ]]></xsd:documentation>
+            </xsd:annotation>
+        </xsd:attribute>
     </xsd:complexType>
 
     <xsd:complexType name="tracingType">
diff --git a/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/filter/MetricsFilter.java b/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/filter/MetricsFilter.java
index 4b5cd74502..7b92276f33 100644
--- a/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/filter/MetricsFilter.java
+++ b/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/filter/MetricsFilter.java
@@ -19,6 +19,7 @@ package org.apache.dubbo.metrics.filter;
 import org.apache.dubbo.common.extension.Activate;
 import org.apache.dubbo.common.logger.ErrorTypeAwareLogger;
 import org.apache.dubbo.common.logger.LoggerFactory;
+import org.apache.dubbo.config.MetricsConfig;
 import org.apache.dubbo.metrics.event.MetricsEventBus;
 import org.apache.dubbo.metrics.event.RequestEvent;
 import org.apache.dubbo.rpc.BaseFilter;
@@ -40,20 +41,24 @@ import static org.apache.dubbo.metrics.DefaultConstants.METRIC_THROWABLE;
 public class MetricsFilter implements Filter, BaseFilter.Listener, ScopeModelAware {
 
     private ApplicationModel applicationModel;
-    private final static ErrorTypeAwareLogger LOGGER = LoggerFactory.getErrorTypeAwareLogger(MetricsFilter.class);
+    private static final ErrorTypeAwareLogger LOGGER = LoggerFactory.getErrorTypeAwareLogger(MetricsFilter.class);
+    private boolean rpcMetricsEnable;
 
     @Override
     public void setApplicationModel(ApplicationModel applicationModel) {
         this.applicationModel = applicationModel;
+        this.rpcMetricsEnable = applicationModel.getApplicationConfigManager().getMetrics().map(MetricsConfig::getEnableRpc).orElse(true);
     }
 
     @Override
     public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
-        try {
-            RequestEvent requestEvent = RequestEvent.toRequestEvent(applicationModel, invocation);
-            MetricsEventBus.before(requestEvent, () -> invocation.put(METRIC_FILTER_EVENT, requestEvent));
-        } catch (Throwable t) {
-            LOGGER.warn(INTERNAL_ERROR, "", "", "Error occurred when invoke.", t);
+        if (rpcMetricsEnable) {
+            try {
+                RequestEvent requestEvent = RequestEvent.toRequestEvent(applicationModel, invocation);
+                MetricsEventBus.before(requestEvent, () -> invocation.put(METRIC_FILTER_EVENT, requestEvent));
+            } catch (Throwable t) {
+                LOGGER.warn(INTERNAL_ERROR, "", "", "Error occurred when invoke.", t);
+            }
         }
         return invoker.invoke(invocation);
     }
@@ -84,6 +89,4 @@ public class MetricsFilter implements Filter, BaseFilter.Listener, ScopeModelAwa
         }
     }
 
-
-
 }
diff --git a/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/filter/MetricsFilterTest.java b/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/filter/MetricsFilterTest.java
index 488986afeb..76db78dfe0 100644
--- a/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/filter/MetricsFilterTest.java
+++ b/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/filter/MetricsFilterTest.java
@@ -82,7 +82,6 @@ class MetricsFilterTest {
         config.setName("MockMetrics");
         applicationModel = ApplicationModel.defaultModel();
         applicationModel.getApplicationConfigManager().setApplication(config);
-
         invocation = new RpcInvocation();
         filter = new MetricsFilter();