From b12b23cbf0698dba96cb2e6b75e4ee272ed25523 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=80?= <78294896+qyi71@users.noreply.github.com> Date: Wed, 22 May 2024 11:10:19 +0800 Subject: [PATCH] fix: not initialize MetricsReporter if not support prometheus (#14225) * fix: not initialize if not support prometheus * add method isImportPrometheus test --------- Co-authored-by: yuanhongbo --- .../config/deploy/DefaultApplicationDeployer.java | 3 +++ .../deploy/DefaultApplicationDeployerTest.java | 12 ++++++++++++ 2 files changed, 15 insertions(+) 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 f58c9c2b24..820cb1e4d7 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 @@ -382,6 +382,9 @@ public class DefaultApplicationDeployer extends AbstractDeployer configOptional = configManager.getMetrics(); // If no specific metrics type is configured and there is no Prometheus dependency in the dependencies. MetricsConfig metricsConfig = configOptional.orElse(new MetricsConfig(applicationModel)); + if (PROTOCOL_PROMETHEUS.equals(metricsConfig.getProtocol()) && !isSupportPrometheus()) { + return; + } if (StringUtils.isBlank(metricsConfig.getProtocol())) { metricsConfig.setProtocol(isSupportPrometheus() ? PROTOCOL_PROMETHEUS : PROTOCOL_DEFAULT); } diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployerTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployerTest.java index e424fb34b2..1cd39c7da8 100644 --- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployerTest.java +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployerTest.java @@ -17,10 +17,13 @@ package org.apache.dubbo.config.deploy; import org.apache.dubbo.common.utils.Assert; +import org.apache.dubbo.config.MetricsConfig; import org.apache.dubbo.rpc.model.ApplicationModel; import org.junit.jupiter.api.Test; +import static org.apache.dubbo.common.constants.MetricsConstants.PROTOCOL_PROMETHEUS; + class DefaultApplicationDeployerTest { @Test @@ -29,4 +32,13 @@ class DefaultApplicationDeployerTest { new DefaultApplicationDeployer(ApplicationModel.defaultModel()).isSupportPrometheus(); Assert.assertTrue(supportPrometheus, "DefaultApplicationDeployer.isSupportPrometheus() should return true"); } + + @Test + void isImportPrometheus() { + MetricsConfig metricsConfig = new MetricsConfig(); + metricsConfig.setProtocol("prometheus"); + boolean importPrometheus = PROTOCOL_PROMETHEUS.equals(metricsConfig.getProtocol()) + && !DefaultApplicationDeployer.isSupportPrometheus(); + Assert.assertTrue(!importPrometheus, " should return false"); + } }