You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ratis.apache.org by ta...@apache.org on 2024/10/09 09:20:02 UTC
(ratis) 01/04: RATIS-2160. MetricRegistriesLoader should not print INFO message in CLI. (#1152)
This is an automated email from the ASF dual-hosted git repository.
tanxinyu pushed a commit to branch snapshot-3
in repository https://gitbox.apache.org/repos/asf/ratis.git
commit 3021c02440907d62f39fa752ab0edd06482bb785
Author: Tsz-Wo Nicholas Sze <sz...@apache.org>
AuthorDate: Sun Sep 29 15:47:51 2024 -0700
RATIS-2160. MetricRegistriesLoader should not print INFO message in CLI. (#1152)
---
.../ratis/metrics/MetricRegistriesLoader.java | 37 +++++++++-------------
.../ratis/metrics/TestMetricRegistriesLoader.java | 6 ++++
2 files changed, 21 insertions(+), 22 deletions(-)
diff --git a/ratis-metrics-api/src/main/java/org/apache/ratis/metrics/MetricRegistriesLoader.java b/ratis-metrics-api/src/main/java/org/apache/ratis/metrics/MetricRegistriesLoader.java
index 0837b0bdd..8baac7a46 100644
--- a/ratis-metrics-api/src/main/java/org/apache/ratis/metrics/MetricRegistriesLoader.java
+++ b/ratis-metrics-api/src/main/java/org/apache/ratis/metrics/MetricRegistriesLoader.java
@@ -22,6 +22,7 @@ package org.apache.ratis.metrics;
import java.util.ArrayList;
import java.util.List;
import java.util.ServiceLoader;
+import java.util.stream.Collectors;
import org.apache.ratis.thirdparty.com.google.common.annotations.VisibleForTesting;
import org.apache.ratis.util.ReflectionUtils;
@@ -30,10 +31,9 @@ import org.slf4j.LoggerFactory;
public final class MetricRegistriesLoader {
- private static final Logger LOG = LoggerFactory.getLogger(MetricRegistries.class);
+ private static final Logger LOG = LoggerFactory.getLogger(MetricRegistriesLoader.class);
- private static final String DEFAULT_CLASS
- = "org.apache.ratis.metrics.impl.MetricRegistriesImpl";
+ static final String DEFAULT_CLASS = "org.apache.ratis.metrics.impl.MetricRegistriesImpl";
private MetricRegistriesLoader() {
}
@@ -56,32 +56,25 @@ public final class MetricRegistriesLoader {
* @return A {@link MetricRegistries} implementation.
*/
@VisibleForTesting
- static MetricRegistries load(List<MetricRegistries> availableImplementations) {
-
- if (availableImplementations.size() == 1) {
- // One and only one instance -- what we want/expect
- MetricRegistries impl = availableImplementations.get(0);
- LOG.info("Loaded MetricRegistries " + impl.getClass());
- return impl;
- } else if (availableImplementations.isEmpty()) {
+ static MetricRegistries load(List<MetricRegistries> registries) {
+ if (registries.isEmpty()) {
try {
return ReflectionUtils.newInstance(Class.forName(DEFAULT_CLASS).asSubclass(MetricRegistries.class));
} catch (ClassNotFoundException e) {
- throw new RuntimeException(e);
+ throw new IllegalStateException("Failed to load default MetricRegistries " + DEFAULT_CLASS, e);
}
+ }
+
+ final MetricRegistries first = registries.get(0);
+ if (registries.size() == 1) {
+ // One and only one instance -- what we want/expect
+ LOG.debug("Loaded {}", first.getClass());
} else {
// Tell the user they're doing something wrong, and choose the first impl.
- StringBuilder sb = new StringBuilder();
- for (MetricRegistries factory : availableImplementations) {
- if (sb.length() > 0) {
- sb.append(", ");
- }
- sb.append(factory.getClass());
- }
- LOG.warn("Found multiple MetricRegistries implementations: " + sb
- + ". Using first found implementation: " + availableImplementations.get(0));
- return availableImplementations.get(0);
+ final List<? extends Class<?>> classes = registries.stream().map(Object::getClass).collect(Collectors.toList());
+ LOG.warn("Found multiple MetricRegistries: {}. Using the first: {}", classes, first.getClass());
}
+ return first;
}
private static List<MetricRegistries> getDefinedImplementations() {
diff --git a/ratis-metrics-default/src/test/java/org/apache/ratis/metrics/TestMetricRegistriesLoader.java b/ratis-metrics-default/src/test/java/org/apache/ratis/metrics/TestMetricRegistriesLoader.java
index cefc6b794..9816cc99c 100644
--- a/ratis-metrics-default/src/test/java/org/apache/ratis/metrics/TestMetricRegistriesLoader.java
+++ b/ratis-metrics-default/src/test/java/org/apache/ratis/metrics/TestMetricRegistriesLoader.java
@@ -34,6 +34,12 @@ import java.util.Collections;
* Test class for {@link MetricRegistriesLoader}.
*/
public class TestMetricRegistriesLoader {
+ @Test
+ public void testLoadEmptyInstance() {
+ MetricRegistries instance = MetricRegistriesLoader.load(Collections.emptyList());
+ assertEquals(MetricRegistriesLoader.DEFAULT_CLASS, instance.getClass().getName());
+ }
+
@Test
public void testLoadSingleInstance() {
MetricRegistries loader = mock(MetricRegistries.class);