fix: not initialize MetricsReporter if not support prometheus (#14225)

* fix: not initialize if not support prometheus

* add method isImportPrometheus test

---------

Co-authored-by: yuanhongbo <yuanhongbo@cai-inc.com>
This commit is contained in:
2024-05-22 11:10:19 +08:00 committed by GitHub
parent cc95b52dfb
commit b12b23cbf0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 15 additions and 0 deletions

View File

@ -382,6 +382,9 @@ public class DefaultApplicationDeployer extends AbstractDeployer<ApplicationMode
Optional<MetricsConfig> configOptional = configManager.getMetrics(); Optional<MetricsConfig> configOptional = configManager.getMetrics();
// If no specific metrics type is configured and there is no Prometheus dependency in the dependencies. // If no specific metrics type is configured and there is no Prometheus dependency in the dependencies.
MetricsConfig metricsConfig = configOptional.orElse(new MetricsConfig(applicationModel)); MetricsConfig metricsConfig = configOptional.orElse(new MetricsConfig(applicationModel));
if (PROTOCOL_PROMETHEUS.equals(metricsConfig.getProtocol()) && !isSupportPrometheus()) {
return;
}
if (StringUtils.isBlank(metricsConfig.getProtocol())) { if (StringUtils.isBlank(metricsConfig.getProtocol())) {
metricsConfig.setProtocol(isSupportPrometheus() ? PROTOCOL_PROMETHEUS : PROTOCOL_DEFAULT); metricsConfig.setProtocol(isSupportPrometheus() ? PROTOCOL_PROMETHEUS : PROTOCOL_DEFAULT);
} }

View File

@ -17,10 +17,13 @@
package org.apache.dubbo.config.deploy; package org.apache.dubbo.config.deploy;
import org.apache.dubbo.common.utils.Assert; import org.apache.dubbo.common.utils.Assert;
import org.apache.dubbo.config.MetricsConfig;
import org.apache.dubbo.rpc.model.ApplicationModel; import org.apache.dubbo.rpc.model.ApplicationModel;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import static org.apache.dubbo.common.constants.MetricsConstants.PROTOCOL_PROMETHEUS;
class DefaultApplicationDeployerTest { class DefaultApplicationDeployerTest {
@Test @Test
@ -29,4 +32,13 @@ class DefaultApplicationDeployerTest {
new DefaultApplicationDeployer(ApplicationModel.defaultModel()).isSupportPrometheus(); new DefaultApplicationDeployer(ApplicationModel.defaultModel()).isSupportPrometheus();
Assert.assertTrue(supportPrometheus, "DefaultApplicationDeployer.isSupportPrometheus() should return true"); 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");
}
} }