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 <[email protected]>
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);

Reply via email to