This is an automated email from the ASF dual-hosted git repository.
albumenj 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 a804501d26 add switch configuration for thread pool indicator burying
point) (#11788) (#11923)
a804501d26 is described below
commit a804501d267a2e4c9d3d2775e8c456f441426d57
Author: robin977 <[email protected]>
AuthorDate: Wed Mar 29 10:14:43 2023 +0800
add switch configuration for thread pool indicator burying point) (#11788)
(#11923)
* adding the reject task indicator for thread pool burying point(#11706)
* adding the reject task indicator for thread pool burying point(#11706)
* dd switch configuration for thread pool indicator burying point (#11788)
* revert code (add switch configuration for thread pool indicator burying
point) (#11788)
* Revert "revert code (add switch configuration for thread pool indicator
burying point) (#11788)"
This reverts commit 3370acc63fc5e4edc382c5ef280d147e6d8f53db.
* add switch configuration for thread pool indicator burying point (#11788)
* add switch configuration for thread pool indicator burying point (#11788)
* add switch configuration for thread pool indicator burying point (#11788)
* add metrics on by default (#11788)
---------
Co-authored-by: robin <[email protected]>
---
.../main/java/org/apache/dubbo/config/MetricsConfig.java | 14 +++++++++++++-
.../dubbo/config/deploy/DefaultApplicationDeployer.java | 5 ++++-
.../src/main/resources/META-INF/dubbo.xsd | 10 ++++++++--
.../dubbo/metrics/collector/DefaultMetricsCollector.java | 9 +++++++++
.../prometheus/PrometheusMetricsThreadPoolTest.java | 6 +++++-
5 files changed, 39 insertions(+), 5 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 d915f53d6b..7d0273039b 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
@@ -41,6 +41,11 @@ public class MetricsConfig extends AbstractConfig {
*/
private Boolean enableJvmMetrics;
+ /**
+ * Enable threadpool metrics when collecting.
+ */
+ private Boolean enableThreadpoolMetrics;
+
/**
* Enable registry metrics.
*/
@@ -175,5 +180,12 @@ public class MetricsConfig extends AbstractConfig {
public void setEnableMetadataMetrics(Boolean enableMetadataMetrics) {
this.enableMetadataMetrics = enableMetadataMetrics;
}
-}
+ public Boolean getEnableThreadpoolMetrics() {
+ return enableThreadpoolMetrics;
+ }
+
+ public void setEnableThreadpoolMetrics(Boolean enableThreadpoolMetrics) {
+ this.enableThreadpoolMetrics = enableThreadpoolMetrics;
+ }
+}
diff --git
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java
index 5481b9def2..047a093c55 100644
---
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java
+++
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java
@@ -368,6 +368,7 @@ public class DefaultApplicationDeployer extends
AbstractDeployer<ApplicationMode
if (metricsConfig != null &&
PROTOCOL_PROMETHEUS.equals(metricsConfig.getProtocol())) {
collector.setCollectEnabled(true);
collector.collectApplication(applicationModel);
+
collector.setThreadpoolCollectEnabled(Optional.ofNullable(metricsConfig.getEnableThreadpoolMetrics()).orElse(true));
String protocol = metricsConfig.getProtocol();
MetricsReporterFactory metricsReporterFactory =
getExtensionLoader(MetricsReporterFactory.class).getAdaptiveExtension();
MetricsReporter metricsReporter =
metricsReporterFactory.createMetricsReporter(metricsConfig.toUrl());
@@ -1121,7 +1122,9 @@ public class DefaultApplicationDeployer extends
AbstractDeployer<ApplicationMode
private void startMetricsCollector() {
DefaultMetricsCollector collector =
applicationModel.getBeanFactory().getBean(DefaultMetricsCollector.class);
- collector.registryDefaultSample();
+ if(Objects.nonNull(collector) &&
collector.isThreadpoolCollectEnabled()) {
+ collector.registryDefaultSample();
+ }
}
private void completeStartFuture(boolean success) {
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 e1f272f402..922cc94281 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
@@ -1058,13 +1058,19 @@
</xsd:annotation>
</xsd:attribute>
- <xsd:attribute name="enable-registry-metrics" type="xsd:boolean"
default="false">
+ <xsd:attribute name="enable-threadpool-metrics" type="xsd:boolean"
default="true">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[ Enable threadpool metrics when
collecting. ]]></xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+
+ <xsd:attribute name="enable-registry-metrics" type="xsd:boolean"
default="true">
<xsd:annotation>
<xsd:documentation><![CDATA[ Enable registry metrics when
collecting. ]]></xsd:documentation>
</xsd:annotation>
</xsd:attribute>
- <xsd:attribute name="enable-metadata-metrics" type="xsd:boolean"
default="false">
+ <xsd:attribute name="enable-metadata-metrics" type="xsd:boolean"
default="true">
<xsd:annotation>
<xsd:documentation><![CDATA[ Enable metadata metrics when
collecting. ]]></xsd:documentation>
</xsd:annotation>
diff --git
a/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/DefaultMetricsCollector.java
b/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/DefaultMetricsCollector.java
index 56a0d5f9db..9123f3936d 100644
---
a/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/DefaultMetricsCollector.java
+++
b/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/DefaultMetricsCollector.java
@@ -41,6 +41,7 @@ public class DefaultMetricsCollector implements
MetricsCollector {
private boolean collectEnabled = false;
+ private volatile boolean threadpoolCollectEnabled=false;
private final SimpleMetricsEventMulticaster eventMulticaster;
private final MethodMetricsSampler methodSampler = new
MethodMetricsSampler(this);
private final ThreadPoolMetricsSampler threadPoolSampler = new
ThreadPoolMetricsSampler(this);
@@ -82,6 +83,14 @@ public class DefaultMetricsCollector implements
MetricsCollector {
return collectEnabled;
}
+ public boolean isThreadpoolCollectEnabled() {
+ return threadpoolCollectEnabled;
+ }
+
+ public void setThreadpoolCollectEnabled(boolean threadpoolCollectEnabled) {
+ this.threadpoolCollectEnabled = threadpoolCollectEnabled;
+ }
+
public MethodMetricsSampler getMethodSampler() {
return this.methodSampler;
}
diff --git
a/dubbo-metrics/dubbo-metrics-prometheus/src/test/java/org/apache/dubbo/metrics/prometheus/PrometheusMetricsThreadPoolTest.java
b/dubbo-metrics/dubbo-metrics-prometheus/src/test/java/org/apache/dubbo/metrics/prometheus/PrometheusMetricsThreadPoolTest.java
index bb242ae35c..db36ee8da9 100644
---
a/dubbo-metrics/dubbo-metrics-prometheus/src/test/java/org/apache/dubbo/metrics/prometheus/PrometheusMetricsThreadPoolTest.java
+++
b/dubbo-metrics/dubbo-metrics-prometheus/src/test/java/org/apache/dubbo/metrics/prometheus/PrometheusMetricsThreadPoolTest.java
@@ -93,6 +93,7 @@ public class PrometheusMetricsThreadPoolTest {
metricsConfig.setPrometheus(prometheusConfig);
metricsConfig.setEnableJvmMetrics(false);
metricsCollector.setCollectEnabled(true);
+ metricsConfig.setEnableThreadpoolMetrics(true);
metricsCollector.collectApplication(applicationModel);
PrometheusMetricsReporter reporter = new
PrometheusMetricsReporter(metricsConfig.toUrl(), applicationModel);
reporter.init();
@@ -102,7 +103,9 @@ public class PrometheusMetricsThreadPoolTest {
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
- metricsCollector.registryDefaultSample();
+ if(metricsConfig.getEnableThreadpoolMetrics()) {
+ metricsCollector.registryDefaultSample();
+ }
try (CloseableHttpClient client = HttpClients.createDefault()) {
HttpGet request = new HttpGet("http://localhost:" + port +
"/metrics");
CloseableHttpResponse response = client.execute(request);
@@ -117,6 +120,7 @@ public class PrometheusMetricsThreadPoolTest {
}
}
+
private void exportHttpServer(PrometheusMetricsReporter reporter, int
port) {
try {
HttpServer prometheusExporterHttpServer = HttpServer.create(new
InetSocketAddress(port), 0);