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"); + } }