This is an automated email from the ASF dual-hosted git repository.

tanxinyu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new d786774701c [IOTDB-5926] Fix Metric Module Code Smell (#10365)
d786774701c is described below

commit d786774701c4644eb426b4fa57ec5363ab1932b5
Author: ZhangHongYin <[email protected]>
AuthorDate: Thu Jun 29 12:42:01 2023 +0800

    [IOTDB-5926] Fix Metric Module Code Smell (#10365)
---
 .../dropwizard/DropwizardMetricManager.java        | 21 +++++++++++
 .../dropwizard/DropwizardMetricNameTool.java       |  9 +++--
 .../type/DropwizardHistogramSnapshot.java          |  2 +-
 .../metrics/dropwizard/type/DropwizardRate.java    |  2 +-
 .../iotdb/metrics/AbstractMetricManager.java       | 21 +++++------
 .../iotdb/metrics/AbstractMetricService.java       |  6 ++--
 .../apache/iotdb/metrics/config/MetricConfig.java  | 18 ++++++++--
 .../metrics/config/MetricConfigDescriptor.java     |  7 ++--
 .../iotdb/metrics/metricsets/UpTimeMetrics.java    |  2 +-
 .../iotdb/metrics/metricsets/jvm/JvmGcMetrics.java | 42 ++++++++--------------
 .../metrics/metricsets/jvm/JvmMemoryMetrics.java   |  6 ++--
 .../metrics/metricsets/jvm/JvmThreadMetrics.java   |  6 ++--
 .../iotdb/metrics/metricsets/jvm/JvmUtils.java     |  5 +++
 .../metrics/metricsets/logback/LogbackMetrics.java | 12 ++++---
 .../reporter/iotdb/IoTDBSessionReporter.java       |  5 +--
 .../iotdb/metrics/utils/IoTDBMetricsUtils.java     |  2 +-
 .../iotdb/metrics/config/MetricConfigTest.java     |  5 +--
 .../micrometer/MicrometerMetricManager.java        | 21 +++++++++++
 .../{JmxConfig.java => MicrometerJmxConfig.java}   |  4 +--
 .../micrometer/reporter/MicrometerJmxReporter.java |  8 ++---
 .../type/MicrometerTimerHistogramSnapshot.java     |  1 +
 21 files changed, 129 insertions(+), 76 deletions(-)

diff --git 
a/iotdb-core/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/DropwizardMetricManager.java
 
b/iotdb-core/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/DropwizardMetricManager.java
index 5fa25f3a452..6eb42770d4b 100644
--- 
a/iotdb-core/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/DropwizardMetricManager.java
+++ 
b/iotdb-core/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/DropwizardMetricManager.java
@@ -38,6 +38,7 @@ import org.apache.iotdb.metrics.utils.MetricType;
 import com.codahale.metrics.MetricFilter;
 import com.codahale.metrics.MetricRegistry;
 
+import java.util.Objects;
 import java.util.function.ToDoubleFunction;
 
 /**
@@ -105,4 +106,24 @@ public class DropwizardMetricManager extends 
AbstractMetricManager {
     metricRegistry.removeMatching(MetricFilter.ALL);
     return true;
   }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (o == null || getClass() != o.getClass()) {
+      return false;
+    }
+    if (!super.equals(o)) {
+      return false;
+    }
+    DropwizardMetricManager that = (DropwizardMetricManager) o;
+    return Objects.equals(metricRegistry, that.metricRegistry);
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(super.hashCode(), metricRegistry);
+  }
 }
diff --git 
a/iotdb-core/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/DropwizardMetricNameTool.java
 
b/iotdb-core/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/DropwizardMetricNameTool.java
index d8d62b978eb..a3c0bacff21 100644
--- 
a/iotdb-core/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/DropwizardMetricNameTool.java
+++ 
b/iotdb-core/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/DropwizardMetricNameTool.java
@@ -28,6 +28,10 @@ import java.util.stream.Collectors;
 public class DropwizardMetricNameTool {
   private static final String TAG_SEPARATOR = ".";
 
+  private DropwizardMetricNameTool() {
+    // util class
+  }
+
   /**
    * Transform flat string and metric type to metricInfo.
    *
@@ -62,7 +66,7 @@ public class DropwizardMetricNameTool {
   public static String toFlatString(MetricInfo metricInfo) {
     String name = metricInfo.getName();
     Map<String, String> tags = metricInfo.getTags();
-    return name.replaceAll("\\{|\\}", "")
+    return name.replace("{", "").replace("}", "")
         + "{"
         + tags.entrySet().stream()
             .map(
@@ -71,7 +75,8 @@ public class DropwizardMetricNameTool {
                         + TAG_SEPARATOR
                         + t.getValue().replace(TAG_SEPARATOR, ""))
             .collect(Collectors.joining(TAG_SEPARATOR))
-            .replaceAll("\\{|\\}", "")
+            .replace("{", "")
+            .replace("}", "")
         + "}";
   }
 }
diff --git 
a/iotdb-core/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/type/DropwizardHistogramSnapshot.java
 
b/iotdb-core/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/type/DropwizardHistogramSnapshot.java
index 732c3321b85..4e7487293dd 100644
--- 
a/iotdb-core/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/type/DropwizardHistogramSnapshot.java
+++ 
b/iotdb-core/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/type/DropwizardHistogramSnapshot.java
@@ -48,7 +48,7 @@ public class DropwizardHistogramSnapshot implements 
HistogramSnapshot {
 
   @Override
   public double getMax() {
-    return (double) snapshot.getMax();
+    return snapshot.getMax();
   }
 
   @Override
diff --git 
a/iotdb-core/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/type/DropwizardRate.java
 
b/iotdb-core/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/type/DropwizardRate.java
index b58b886da65..fbf3c7d40dc 100644
--- 
a/iotdb-core/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/type/DropwizardRate.java
+++ 
b/iotdb-core/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/type/DropwizardRate.java
@@ -25,7 +25,7 @@ import com.codahale.metrics.Meter;
 
 public class DropwizardRate implements Rate {
   Meter meter;
-  /** read-only meter */
+  /** read-only meter. */
   com.codahale.metrics.Timer timer;
 
   public DropwizardRate(Meter meter) {
diff --git 
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/AbstractMetricManager.java
 
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/AbstractMetricManager.java
index e077598ba30..66c4fae54d1 100644
--- 
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/AbstractMetricManager.java
+++ 
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/AbstractMetricManager.java
@@ -46,12 +46,13 @@ import java.util.function.ToDoubleFunction;
 public abstract class AbstractMetricManager {
   protected static final MetricConfig METRIC_CONFIG =
       MetricConfigDescriptor.getInstance().getMetricConfig();
+  private static final String ALREADY_EXISTS = " is already used for a 
different type of name";
   /** The map from metric name to metric metaInfo. */
   protected Map<String, MetricInfo.MetaInfo> nameToMetaInfo;
   /** The map from metricInfo to metric. */
   protected Map<MetricInfo, IMetric> metrics;
 
-  public AbstractMetricManager() {
+  protected AbstractMetricManager() {
     nameToMetaInfo = new ConcurrentHashMap<>();
     metrics = new ConcurrentHashMap<>();
   }
@@ -80,8 +81,7 @@ public abstract class AbstractMetricManager {
     if (metric instanceof Counter) {
       return (Counter) metric;
     }
-    throw new IllegalArgumentException(
-        metricInfo + " is already used for a different type of name");
+    throw new IllegalArgumentException(metricInfo + ALREADY_EXISTS);
   }
 
   protected abstract Counter createCounter(MetricInfo metricInfo);
@@ -138,8 +138,7 @@ public abstract class AbstractMetricManager {
     } else if (metric instanceof AutoGauge) {
       return (AutoGauge) metric;
     }
-    throw new IllegalArgumentException(
-        metricInfo + " is already used for a different type of name");
+    throw new IllegalArgumentException(metricInfo + ALREADY_EXISTS);
   }
 
   /**
@@ -166,8 +165,7 @@ public abstract class AbstractMetricManager {
     if (metric instanceof Gauge) {
       return (Gauge) metric;
     }
-    throw new IllegalArgumentException(
-        metricInfo + " is already used for a different type of name");
+    throw new IllegalArgumentException(metricInfo + ALREADY_EXISTS);
   }
 
   /**
@@ -201,8 +199,7 @@ public abstract class AbstractMetricManager {
     if (metric instanceof Rate) {
       return (Rate) metric;
     }
-    throw new IllegalArgumentException(
-        metricInfo + " is already used for a different type of name");
+    throw new IllegalArgumentException(metricInfo + ALREADY_EXISTS);
   }
 
   /**
@@ -236,8 +233,7 @@ public abstract class AbstractMetricManager {
     if (metric instanceof Histogram) {
       return (Histogram) metric;
     }
-    throw new IllegalArgumentException(
-        metricInfo + " is already used for a different type of name");
+    throw new IllegalArgumentException(metricInfo + ALREADY_EXISTS);
   }
 
   /**
@@ -271,8 +267,7 @@ public abstract class AbstractMetricManager {
     if (metric instanceof Timer) {
       return (Timer) metric;
     }
-    throw new IllegalArgumentException(
-        metricInfo + " is already used for a different type of name");
+    throw new IllegalArgumentException(metricInfo + ALREADY_EXISTS);
   }
 
   /**
diff --git 
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/AbstractMetricService.java
 
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/AbstractMetricService.java
index 31e1e352ed1..5ac5a3737f2 100644
--- 
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/AbstractMetricService.java
+++ 
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/AbstractMetricService.java
@@ -70,7 +70,7 @@ public abstract class AbstractMetricService {
   /** The list of metric sets. */
   protected Set<IMetricSet> metricSets = new HashSet<>();
 
-  public AbstractMetricService() {
+  protected AbstractMetricService() {
     // empty constructor
   }
 
@@ -169,7 +169,7 @@ public abstract class AbstractMetricService {
           reporter = new IoTDBSessionReporter(metricManager);
           break;
         default:
-          continue;
+          break;
       }
       if (reporter == null) {
         LOGGER.warn("Failed to load reporter which type is {}", reporterType);
@@ -324,7 +324,7 @@ public abstract class AbstractMetricService {
         metricManager.count(delta, metric, metricLevel, tags), metric, tags);
   }
 
-  /** Gauge value with internal report */
+  /** Gauge value with internal report. */
   public void gaugeWithInternalReportAsync(
       long value, String metric, MetricLevel metricLevel, String... tags) {
     internalReporter.writeMetricToIoTDB(
diff --git 
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfig.java
 
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfig.java
index 8be699eb106..5ca7d7a4324 100644
--- 
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfig.java
+++ 
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfig.java
@@ -134,7 +134,7 @@ public class MetricConfig {
     this.prometheusReporterPort = prometheusReporterPort;
   }
 
-  public IoTDBReporterConfig getIotdbReporterConfig() {
+  public IoTDBReporterConfig getIoTDBReporterConfig() {
     return iotdbReporterConfig;
   }
 
@@ -187,7 +187,7 @@ public class MetricConfig {
     prometheusReporterPort = newMetricConfig.getPrometheusReporterPort();
     internalReporterType = newMetricConfig.getInternalReportType();
 
-    iotdbReporterConfig.copy(newMetricConfig.getIotdbReporterConfig());
+    iotdbReporterConfig.copy(newMetricConfig.getIoTDBReporterConfig());
   }
 
   @Override
@@ -201,10 +201,22 @@ public class MetricConfig {
         && metricLevel.equals(anotherMetricConfig.getMetricLevel())
         && 
asyncCollectPeriodInSecond.equals(anotherMetricConfig.getAsyncCollectPeriodInSecond())
         && 
prometheusReporterPort.equals(anotherMetricConfig.getPrometheusReporterPort())
-        && 
iotdbReporterConfig.equals(anotherMetricConfig.getIotdbReporterConfig())
+        && 
iotdbReporterConfig.equals(anotherMetricConfig.getIoTDBReporterConfig())
         && 
internalReporterType.equals(anotherMetricConfig.getInternalReportType());
   }
 
+  @Override
+  public int hashCode() {
+    return Objects.hash(
+        metricFrameType,
+        metricReporterList,
+        metricLevel,
+        asyncCollectPeriodInSecond,
+        prometheusReporterPort,
+        iotdbReporterConfig,
+        internalReporterType);
+  }
+
   public static class IoTDBReporterConfig {
     /** The host of iotdb that store metric value. */
     private String host = "127.0.0.1";
diff --git 
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfigDescriptor.java
 
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfigDescriptor.java
index 9125ca3683b..9da5759930b 100644
--- 
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfigDescriptor.java
+++ 
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfigDescriptor.java
@@ -19,6 +19,7 @@
 
 package org.apache.iotdb.metrics.config;
 
+import org.apache.iotdb.metrics.config.MetricConfig.IoTDBReporterConfig;
 import org.apache.iotdb.metrics.utils.InternalReporterType;
 import org.apache.iotdb.metrics.utils.MetricFrameType;
 import org.apache.iotdb.metrics.utils.MetricLevel;
@@ -30,10 +31,10 @@ import java.util.stream.Collectors;
 /** The utils class to load properties. */
 public class MetricConfigDescriptor {
   /** The metric config of metric service. */
-  private final MetricConfig metricConfig;
+  private static final MetricConfig metricConfig = new MetricConfig();
 
   private MetricConfigDescriptor() {
-    metricConfig = new MetricConfig();
+    // empty constructor
   }
 
   /** Load properties into metric config. */
@@ -110,7 +111,7 @@ public class MetricConfigDescriptor {
                 String.valueOf(loadConfig.getPrometheusReporterPort()),
                 properties)));
 
-    MetricConfig.IoTDBReporterConfig reporterConfig = 
loadConfig.getIotdbReporterConfig();
+    IoTDBReporterConfig reporterConfig = loadConfig.getIoTDBReporterConfig();
     reporterConfig.setHost(
         getProperty("metric_iotdb_reporter_host", reporterConfig.getHost(), 
properties));
 
diff --git 
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/UpTimeMetrics.java
 
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/UpTimeMetrics.java
index 2955723250e..0f442100413 100644
--- 
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/UpTimeMetrics.java
+++ 
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/UpTimeMetrics.java
@@ -34,7 +34,7 @@ public class UpTimeMetrics implements IMetricSet {
         "up_time",
         MetricLevel.CORE,
         metricConfig,
-        (config) -> System.nanoTime() - config.getUpTimeInNs());
+        config -> System.nanoTime() - config.getUpTimeInNs());
   }
 
   @Override
diff --git 
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/jvm/JvmGcMetrics.java
 
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/jvm/JvmGcMetrics.java
index 857fc2ecfaa..77264c868a9 100644
--- 
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/jvm/JvmGcMetrics.java
+++ 
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/jvm/JvmGcMetrics.java
@@ -44,7 +44,6 @@ import java.lang.management.MemoryUsage;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Optional;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicLong;
@@ -255,7 +254,8 @@ public class JvmGcMetrics implements IMetricSet, 
AutoCloseable {
   private boolean preCheck() {
     if (ManagementFactory.getMemoryPoolMXBeans().isEmpty()) {
       logger.warn(
-          "GC notifications will not be available because MemoryPoolMXBeans 
are not provided by the JVM");
+          "GC notifications will not be available because MemoryPoolMXBeans "
+              + "are not provided by the JVM");
       return false;
     }
 
@@ -264,7 +264,7 @@ public class JvmGcMetrics implements IMetricSet, 
AutoCloseable {
           "com.sun.management.GarbageCollectionNotificationInfo",
           false,
           MemoryPoolMXBean.class.getClassLoader());
-    } catch (Throwable e) {
+    } catch (Exception e) {
       // We are operating in a JVM without access to this level of detail
       logger.warn(
           "GC notifications will not be available because "
@@ -299,32 +299,24 @@ public class JvmGcMetrics implements IMetricSet, 
AutoCloseable {
     YOUNG,
     UNKNOWN;
 
-    private static Map<String, GcGenerationAge> knownCollectors =
-        new HashMap<String, GcGenerationAge>() {
-          {
-            put("ConcurrentMarkSweep", OLD);
-            put("Copy", YOUNG);
-            put("G1 Old Generation", OLD);
-            put("G1 Young Generation", YOUNG);
-            put("MarkSweepCompact", OLD);
-            put("PS MarkSweep", OLD);
-            put("PS Scavenge", YOUNG);
-            put("ParNew", YOUNG);
-          }
-        };
+    private static Map<String, GcGenerationAge> knownCollectors = new 
HashMap<>();
+
+    static {
+      knownCollectors.put("ConcurrentMarkSweep", OLD);
+      knownCollectors.put("Copy", YOUNG);
+      knownCollectors.put("G1 Old Generation", OLD);
+      knownCollectors.put("G1 Young Generation", YOUNG);
+      knownCollectors.put("MarkSweepCompact", OLD);
+      knownCollectors.put("PS MarkSweep", OLD);
+      knownCollectors.put("PS Scavenge", YOUNG);
+      knownCollectors.put("ParNew", YOUNG);
+    }
 
     static GcGenerationAge fromName(String name) {
       return knownCollectors.getOrDefault(name, UNKNOWN);
     }
   }
 
-  private static Optional<MemoryPoolMXBean> getLongLivedHeapPool() {
-    return 
ManagementFactory.getPlatformMXBeans(MemoryPoolMXBean.class).stream()
-        .filter(JvmGcMetrics::isHeap)
-        .filter(mem -> isOldGenPool(mem.getName()) || 
isNonGenerationalHeapPool(mem.getName()))
-        .findAny();
-  }
-
   private static boolean isConcurrentPhase(String cause, String name) {
     return "No GC".equals(cause) || "Shenandoah Cycles".equals(name);
   }
@@ -340,8 +332,4 @@ public class JvmGcMetrics implements IMetricSet, 
AutoCloseable {
   private static boolean isNonGenerationalHeapPool(String name) {
     return "Shenandoah".equals(name) || "ZHeap".equals(name);
   }
-
-  private static boolean isHeap(MemoryPoolMXBean memoryPoolBean) {
-    return MemoryType.HEAP.equals(memoryPoolBean.getType());
-  }
 }
diff --git 
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/jvm/JvmMemoryMetrics.java
 
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/jvm/JvmMemoryMetrics.java
index efef8aae98f..bf23121dfaa 100644
--- 
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/jvm/JvmMemoryMetrics.java
+++ 
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/jvm/JvmMemoryMetrics.java
@@ -69,7 +69,7 @@ public class JvmMemoryMetrics implements IMetricSet {
           "jvm_memory_used_bytes",
           MetricLevel.CORE,
           memoryPoolBean,
-          (mem) -> JvmUtils.getUsageValue(mem, MemoryUsage::getUsed),
+          mem -> JvmUtils.getUsageValue(mem, MemoryUsage::getUsed),
           "id",
           memoryPoolBean.getName(),
           "area",
@@ -79,7 +79,7 @@ public class JvmMemoryMetrics implements IMetricSet {
           "jvm_memory_committed_bytes",
           MetricLevel.CORE,
           memoryPoolBean,
-          (mem) -> JvmUtils.getUsageValue(mem, MemoryUsage::getCommitted),
+          mem -> JvmUtils.getUsageValue(mem, MemoryUsage::getCommitted),
           "id",
           memoryPoolBean.getName(),
           "area",
@@ -89,7 +89,7 @@ public class JvmMemoryMetrics implements IMetricSet {
           "jvm_memory_max_bytes",
           MetricLevel.CORE,
           memoryPoolBean,
-          (mem) -> JvmUtils.getUsageValue(mem, MemoryUsage::getMax),
+          mem -> JvmUtils.getUsageValue(mem, MemoryUsage::getMax),
           "id",
           memoryPoolBean.getName(),
           "area",
diff --git 
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/jvm/JvmThreadMetrics.java
 
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/jvm/JvmThreadMetrics.java
index 6a6643fbf7e..1dbc5600cc9 100644
--- 
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/jvm/JvmThreadMetrics.java
+++ 
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/jvm/JvmThreadMetrics.java
@@ -62,11 +62,11 @@ public class JvmThreadMetrics implements IMetricSet {
             "jvm_threads_states_threads",
             MetricLevel.CORE,
             threadBean,
-            (bean) -> getThreadStateCount(bean, state),
+            bean -> getThreadStateCount(bean, state),
             "state",
             getStateTagValue(state));
       }
-    } catch (Error error) {
+    } catch (Exception exception) {
       // An error will be thrown for unsupported operations
       // e.g. SubstrateVM does not support getAllThreadIds
     }
@@ -86,7 +86,7 @@ public class JvmThreadMetrics implements IMetricSet {
         metricService.remove(
             MetricType.AUTO_GAUGE, "jvm_threads_states_threads", "state", 
getStateTagValue(state));
       }
-    } catch (Error error) {
+    } catch (Exception exception) {
       // An error will be thrown for unsupported operations
       // e.g. SubstrateVM does not support getAllThreadIds
     }
diff --git 
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/jvm/JvmUtils.java
 
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/jvm/JvmUtils.java
index 4455e2d61e7..8b91e01ce53 100644
--- 
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/jvm/JvmUtils.java
+++ 
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/jvm/JvmUtils.java
@@ -24,6 +24,11 @@ import java.lang.management.MemoryUsage;
 import java.util.function.ToLongFunction;
 
 public class JvmUtils {
+
+  private JvmUtils() {
+    // util class
+  }
+
   static double getUsageValue(
       MemoryPoolMXBean memoryPoolMxBean, ToLongFunction<MemoryUsage> getter) {
     MemoryUsage usage = getUsage(memoryPoolMxBean);
diff --git 
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/logback/LogbackMetrics.java
 
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/logback/LogbackMetrics.java
index 852ad6c28b1..e7766e944f2 100644
--- 
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/logback/LogbackMetrics.java
+++ 
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/logback/LogbackMetrics.java
@@ -35,6 +35,8 @@ import java.util.Map;
 /** This file is modified from 
io.micrometer.core.instrument.binder.logging.LogbackMetrics */
 public class LogbackMetrics implements IMetricSet {
   private static final org.slf4j.Logger logger = 
LoggerFactory.getLogger(LogbackMetrics.class);
+  private static final String LEVEL = "level";
+  private static final String METRIC_NAME = "logback_events";
   static ThreadLocal<Boolean> ignoreMetrics = new ThreadLocal<>();
   private final LoggerContext loggerContext = (LoggerContext) 
LoggerFactory.getILoggerFactory();
   private final Map<AbstractMetricService, MetricsTurboFilter> 
metricsTurboFilters =
@@ -91,11 +93,11 @@ public class LogbackMetrics implements IMetricSet {
         for (MetricsTurboFilter addMetricsTurboFilter : 
metricsTurboFilters.values()) {
           loggerContext.getTurboFilterList().remove(addMetricsTurboFilter);
         }
-        metricService.remove(MetricType.COUNTER, "logback_events", "level", 
"error");
-        metricService.remove(MetricType.COUNTER, "logback_events", "level", 
"warn");
-        metricService.remove(MetricType.COUNTER, "logback_events", "level", 
"info");
-        metricService.remove(MetricType.COUNTER, "logback_events", "level", 
"debug");
-        metricService.remove(MetricType.COUNTER, "logback_events", "level", 
"trace");
+        metricService.remove(MetricType.COUNTER, METRIC_NAME, LEVEL, "error");
+        metricService.remove(MetricType.COUNTER, METRIC_NAME, LEVEL, "warn");
+        metricService.remove(MetricType.COUNTER, METRIC_NAME, LEVEL, "info");
+        metricService.remove(MetricType.COUNTER, METRIC_NAME, LEVEL, "debug");
+        metricService.remove(MetricType.COUNTER, METRIC_NAME, LEVEL, "trace");
       }
     } catch (Exception e) {
       logger.warn("Failed to remove logBackMetrics, because ", e);
diff --git 
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/IoTDBSessionReporter.java
 
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/IoTDBSessionReporter.java
index af5a0529f78..a90fde3ca00 100644
--- 
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/IoTDBSessionReporter.java
+++ 
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/IoTDBSessionReporter.java
@@ -22,6 +22,7 @@ package org.apache.iotdb.metrics.reporter.iotdb;
 import org.apache.iotdb.isession.pool.SessionDataSetWrapper;
 import org.apache.iotdb.metrics.AbstractMetricManager;
 import org.apache.iotdb.metrics.config.MetricConfig;
+import org.apache.iotdb.metrics.config.MetricConfig.IoTDBReporterConfig;
 import org.apache.iotdb.metrics.config.MetricConfigDescriptor;
 import org.apache.iotdb.metrics.type.IMetric;
 import org.apache.iotdb.metrics.utils.IoTDBMetricsUtils;
@@ -48,8 +49,8 @@ public class IoTDBSessionReporter extends IoTDBReporter {
   private static final Logger LOGGER = 
LoggerFactory.getLogger(IoTDBSessionReporter.class);
   private static final MetricConfig metricConfig =
       MetricConfigDescriptor.getInstance().getMetricConfig();
-  private static final MetricConfig.IoTDBReporterConfig ioTDBReporterConfig =
-      
MetricConfigDescriptor.getInstance().getMetricConfig().getIotdbReporterConfig();
+  private static final IoTDBReporterConfig ioTDBReporterConfig =
+      
MetricConfigDescriptor.getInstance().getMetricConfig().getIoTDBReporterConfig();
   private Future<?> currentServiceFuture;
   private final ScheduledExecutorService service = 
Executors.newSingleThreadScheduledExecutor();
 
diff --git 
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/utils/IoTDBMetricsUtils.java
 
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/utils/IoTDBMetricsUtils.java
index 632d27345d3..96a22caa488 100644
--- 
a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/utils/IoTDBMetricsUtils.java
+++ 
b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/utils/IoTDBMetricsUtils.java
@@ -72,7 +72,7 @@ public class IoTDBMetricsUtils {
     stringBuilder
         .append(METRIC_CONFIG.getInternalDatabase())
         .append(".")
-        .append(METRIC_CONFIG.getIotdbReporterConfig().getLocation())
+        .append(METRIC_CONFIG.getIoTDBReporterConfig().getLocation())
         .append(".`")
         .append(METRIC_CONFIG.getClusterName())
         .append("`.")
diff --git 
a/iotdb-core/metrics/interface/src/test/java/org/apache/iotdb/metrics/config/MetricConfigTest.java
 
b/iotdb-core/metrics/interface/src/test/java/org/apache/iotdb/metrics/config/MetricConfigTest.java
index dacc733db91..68f8f2f61d4 100644
--- 
a/iotdb-core/metrics/interface/src/test/java/org/apache/iotdb/metrics/config/MetricConfigTest.java
+++ 
b/iotdb-core/metrics/interface/src/test/java/org/apache/iotdb/metrics/config/MetricConfigTest.java
@@ -19,6 +19,7 @@
 
 package org.apache.iotdb.metrics.config;
 
+import org.apache.iotdb.metrics.config.MetricConfig.IoTDBReporterConfig;
 import org.apache.iotdb.metrics.utils.InternalReporterType;
 import org.apache.iotdb.metrics.utils.MetricFrameType;
 import org.apache.iotdb.metrics.utils.MetricLevel;
@@ -58,7 +59,7 @@ public class MetricConfigTest {
     assertEquals(10, (int) metricConfig.getAsyncCollectPeriodInSecond());
     assertEquals(9090, (int) metricConfig.getPrometheusReporterPort());
 
-    MetricConfig.IoTDBReporterConfig reporterConfig = 
metricConfig.getIotdbReporterConfig();
+    IoTDBReporterConfig reporterConfig = metricConfig.getIoTDBReporterConfig();
     assertEquals("0.0.0.0", reporterConfig.getHost());
     assertEquals(6669, (int) reporterConfig.getPort());
     assertEquals("user", reporterConfig.getUsername());
@@ -97,7 +98,7 @@ public class MetricConfigTest {
     assertEquals(10, (int) metricConfig.getAsyncCollectPeriodInSecond());
     assertEquals(9090, (int) metricConfig.getPrometheusReporterPort());
 
-    MetricConfig.IoTDBReporterConfig reporterConfig = 
metricConfig.getIotdbReporterConfig();
+    IoTDBReporterConfig reporterConfig = metricConfig.getIoTDBReporterConfig();
     assertEquals("0.0.0.0", reporterConfig.getHost());
     assertEquals(6669, (int) reporterConfig.getPort());
     assertEquals("user", reporterConfig.getUsername());
diff --git 
a/iotdb-core/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/MicrometerMetricManager.java
 
b/iotdb-core/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/MicrometerMetricManager.java
index 3575b70e259..03f23b9b2b0 100644
--- 
a/iotdb-core/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/MicrometerMetricManager.java
+++ 
b/iotdb-core/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/MicrometerMetricManager.java
@@ -40,6 +40,7 @@ import io.micrometer.core.instrument.Metrics;
 import io.micrometer.core.instrument.Tags;
 import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
 
+import java.util.Objects;
 import java.util.concurrent.atomic.AtomicLong;
 import java.util.function.ToDoubleFunction;
 
@@ -129,4 +130,24 @@ public class MicrometerMetricManager extends 
AbstractMetricManager {
         return Meter.Type.OTHER;
     }
   }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) {
+      return true;
+    }
+    if (o == null || getClass() != o.getClass()) {
+      return false;
+    }
+    if (!super.equals(o)) {
+      return false;
+    }
+    MicrometerMetricManager that = (MicrometerMetricManager) o;
+    return Objects.equals(meterRegistry, that.meterRegistry);
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(super.hashCode(), meterRegistry);
+  }
 }
diff --git 
a/iotdb-core/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/reporter/JmxConfig.java
 
b/iotdb-core/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/reporter/MicrometerJmxConfig.java
similarity index 88%
rename from 
iotdb-core/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/reporter/JmxConfig.java
rename to 
iotdb-core/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/reporter/MicrometerJmxConfig.java
index 5e98a35a502..6b5e867dd22 100644
--- 
a/iotdb-core/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/reporter/JmxConfig.java
+++ 
b/iotdb-core/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/reporter/MicrometerJmxConfig.java
@@ -19,8 +19,8 @@
 
 package org.apache.iotdb.metrics.micrometer.reporter;
 
-public interface JmxConfig extends io.micrometer.jmx.JmxConfig {
-  JmxConfig DEFAULT = k -> null;
+public interface MicrometerJmxConfig extends io.micrometer.jmx.JmxConfig {
+  MicrometerJmxConfig DEFAULT = k -> null;
 
   @Override
   default String domain() {
diff --git 
a/iotdb-core/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/reporter/MicrometerJmxReporter.java
 
b/iotdb-core/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/reporter/MicrometerJmxReporter.java
index 6aaf75ca29d..929527b8cce 100644
--- 
a/iotdb-core/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/reporter/MicrometerJmxReporter.java
+++ 
b/iotdb-core/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/reporter/MicrometerJmxReporter.java
@@ -41,13 +41,13 @@ public class MicrometerJmxReporter implements JmxReporter {
     try {
       Set<MeterRegistry> meterRegistrySet =
           Metrics.globalRegistry.getRegistries().stream()
-              .filter(reporter -> reporter instanceof JmxMeterRegistry)
+              .filter(JmxMeterRegistry.class::isInstance)
               .collect(Collectors.toSet());
-      if (meterRegistrySet.size() != 0) {
+      if (!meterRegistrySet.isEmpty()) {
         LOGGER.warn("Micrometer JmxReporter already start!");
         return false;
       }
-      Metrics.addRegistry(new JmxMeterRegistry(JmxConfig.DEFAULT, 
Clock.SYSTEM));
+      Metrics.addRegistry(new JmxMeterRegistry(MicrometerJmxConfig.DEFAULT, 
Clock.SYSTEM));
     } catch (Exception e) {
       LOGGER.warn("Micrometer JmxReporter failed to start, because ", e);
       return false;
@@ -61,7 +61,7 @@ public class MicrometerJmxReporter implements JmxReporter {
     try {
       Set<MeterRegistry> meterRegistrySet =
           Metrics.globalRegistry.getRegistries().stream()
-              .filter(reporter -> reporter instanceof JmxMeterRegistry)
+              .filter(JmxMeterRegistry.class::isInstance)
               .collect(Collectors.toSet());
       for (MeterRegistry meterRegistry : meterRegistrySet) {
         if (!meterRegistry.isClosed()) {
diff --git 
a/iotdb-core/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/type/MicrometerTimerHistogramSnapshot.java
 
b/iotdb-core/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/type/MicrometerTimerHistogramSnapshot.java
index cf80737fdb3..5ebfdc2af8d 100644
--- 
a/iotdb-core/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/type/MicrometerTimerHistogramSnapshot.java
+++ 
b/iotdb-core/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/type/MicrometerTimerHistogramSnapshot.java
@@ -16,6 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+
 package org.apache.iotdb.metrics.micrometer.type;
 
 import org.apache.iotdb.metrics.type.HistogramSnapshot;


Reply via email to