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();