You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ratis.apache.org by dr...@apache.org on 2022/08/17 08:08:53 UTC

[ratis] branch branch-2 updated: RATIS-1675. Revert RATIS-1601 & RATIS-1391 (#715)

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

dragonyliu pushed a commit to branch branch-2
in repository https://gitbox.apache.org/repos/asf/ratis.git


The following commit(s) were added to refs/heads/branch-2 by this push:
     new 7d3716db7 RATIS-1675. Revert  RATIS-1601 & RATIS-1391 (#715)
7d3716db7 is described below

commit 7d3716db7383f1a2b02ebd532d75aaaf865a8420
Author: Yaolong Liu <ly...@163.com>
AuthorDate: Wed Aug 17 16:08:49 2022 +0800

    RATIS-1675. Revert  RATIS-1601 & RATIS-1391 (#715)
    
    * Revert "RATIS-1601. Use the shaded dropwizard metrics and remove the dependency (#671)"
    
    This reverts commit c41a60b6034ffc7ca635f7236cfaa0f50ffd2c51.
    
    * Revert "RATIS-1391. Update library dropwizard.metrics version to 4.x (#632)"
    
    This reverts commit dbb4ffa3
    
    Co-authored-by: dragonyliu <dr...@tencent.com>
---
 pom.xml                                            | 22 +++++++++-
 ratis-examples/pom.xml                             |  5 +++
 .../ratis/grpc/metrics/GrpcServerMetrics.java      |  4 +-
 .../apache/ratis/grpc/server/GrpcLogAppender.java  |  2 +-
 .../ratis/grpc/server/TestGrpcServerMetrics.java   |  2 +-
 ratis-metrics/pom.xml                              | 21 +++++++++
 .../java/org/apache/ratis/metrics/JVMMetrics.java  |  8 ++--
 .../apache/ratis/metrics/MetricRegistryInfo.java   |  2 +-
 .../org/apache/ratis/metrics/MetricsReporting.java |  8 ++--
 .../apache/ratis/metrics/RatisMetricRegistry.java  | 13 +++++-
 .../ratis/metrics/RatisObjectNameFactory.java      | 50 ----------------------
 .../metrics/impl/RatisMetricRegistryImpl.java      | 22 +++++++---
 .../netty/metrics/NettyServerStreamRpcMetrics.java |  2 +-
 .../apache/ratis/server/impl/LeaderElection.java   |  2 +-
 .../apache/ratis/server/impl/RaftServerImpl.java   |  2 +-
 .../ratis/server/impl/StateMachineMetrics.java     |  2 +-
 .../ratis/server/impl/StateMachineUpdater.java     |  2 +-
 .../server/metrics/LeaderElectionMetrics.java      |  2 +-
 .../ratis/server/metrics/RaftLogMetricsBase.java   |  2 +-
 .../server/metrics/RaftServerMetricsImpl.java      |  6 +--
 .../server/metrics/SegmentedRaftLogMetrics.java    |  4 +-
 .../server/raftlog/segmented/SegmentedRaftLog.java |  2 +-
 .../raftlog/segmented/SegmentedRaftLogReader.java  |  2 +-
 .../raftlog/segmented/SegmentedRaftLogWorker.java  |  4 +-
 .../ratis/statemachine/impl/BaseStateMachine.java  |  2 +-
 .../java/org/apache/ratis/LogAppenderTests.java    |  2 +-
 .../test/java/org/apache/ratis/RaftBasicTests.java |  2 +-
 .../ratis/server/impl/LeaderElectionTests.java     |  2 +-
 .../ratis/server/impl/TestLogAppenderMetrics.java  |  2 +-
 .../ratis/server/impl/TestRetryCacheMetrics.java   |  2 +-
 .../server/metrics/TestLeaderElectionMetrics.java  | 14 ++----
 .../ratis/statemachine/RaftSnapshotBaseTest.java   |  4 +-
 ratis-test/pom.xml                                 |  6 +++
 .../ratis/TestRaftServerSlownessDetection.java     |  2 +-
 .../apache/ratis/grpc/TestRaftServerWithGrpc.java  |  2 +-
 .../ratis/grpc/TestRaftSnapshotWithGrpc.java       |  2 +-
 .../ratis/server/raftlog/TestRaftLogMetrics.java   |  2 +-
 .../server/raftlog/segmented/TestLogSegment.java   |  2 +-
 .../raftlog/segmented/TestSegmentedRaftLog.java    |  2 +-
 39 files changed, 127 insertions(+), 112 deletions(-)

diff --git a/pom.xml b/pom.xml
index f6f0acd66..ffffe82e3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -218,8 +218,7 @@
     <testsThreadCount>4</testsThreadCount>
 
     <!--metrics-->
-    <shaded.dropwizard.version>4.2.9</shaded.dropwizard.version>
-    <shaded.dropwizard.ganglia.version>3.2.6</shaded.dropwizard.ganglia.version>
+    <dropwizard.version>3.2.5</dropwizard.version>
   </properties>
 
   <dependencyManagement>
@@ -409,6 +408,25 @@
         <artifactId>jcommander</artifactId>
         <version>1.72</version>
       </dependency>
+
+      <dependency>
+        <groupId>io.dropwizard.metrics</groupId>
+        <artifactId>metrics-core</artifactId>
+        <version>${dropwizard.version}</version>
+      </dependency>
+
+      <dependency>
+        <groupId>io.dropwizard.metrics</groupId>
+        <artifactId>metrics-jvm</artifactId>
+        <version>${dropwizard.version}</version>
+      </dependency>
+
+      <dependency>
+        <groupId>io.dropwizard.metrics</groupId>
+        <artifactId>metrics-ganglia</artifactId>
+        <version>${dropwizard.version}</version>
+      </dependency>
+
       <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
diff --git a/ratis-examples/pom.xml b/ratis-examples/pom.xml
index 1f8b86041..9deb3f9bc 100644
--- a/ratis-examples/pom.xml
+++ b/ratis-examples/pom.xml
@@ -97,6 +97,11 @@
       <artifactId>jcommander</artifactId>
     </dependency>
 
+    <dependency>
+       <groupId>io.dropwizard.metrics</groupId>
+       <artifactId>metrics-jvm</artifactId>
+    </dependency>
+
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
diff --git a/ratis-grpc/src/main/java/org/apache/ratis/grpc/metrics/GrpcServerMetrics.java b/ratis-grpc/src/main/java/org/apache/ratis/grpc/metrics/GrpcServerMetrics.java
index 0bc400d6b..01859c296 100644
--- a/ratis-grpc/src/main/java/org/apache/ratis/grpc/metrics/GrpcServerMetrics.java
+++ b/ratis-grpc/src/main/java/org/apache/ratis/grpc/metrics/GrpcServerMetrics.java
@@ -17,13 +17,13 @@
  */
 package org.apache.ratis.grpc.metrics;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.Gauge;
+import com.codahale.metrics.Gauge;
 import org.apache.ratis.metrics.MetricRegistryInfo;
 import org.apache.ratis.metrics.RatisMetricRegistry;
 import org.apache.ratis.metrics.RatisMetrics;
 import org.apache.ratis.thirdparty.com.google.common.annotations.VisibleForTesting;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.Timer;
+import com.codahale.metrics.Timer;
 
 public class GrpcServerMetrics extends RatisMetrics {
   private static final String RATIS_GRPC_METRICS_APP_NAME = "ratis_grpc";
diff --git a/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcLogAppender.java b/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcLogAppender.java
index 3e33a1787..d9bcb33d1 100644
--- a/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcLogAppender.java
+++ b/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcLogAppender.java
@@ -49,7 +49,7 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicLong;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.Timer;
+import com.codahale.metrics.Timer;
 
 /**
  * A new log appender implementation using grpc bi-directional stream API.
diff --git a/ratis-grpc/src/test/java/org/apache/ratis/grpc/server/TestGrpcServerMetrics.java b/ratis-grpc/src/test/java/org/apache/ratis/grpc/server/TestGrpcServerMetrics.java
index 252a0dc2e..bc54300c5 100644
--- a/ratis-grpc/src/test/java/org/apache/ratis/grpc/server/TestGrpcServerMetrics.java
+++ b/ratis-grpc/src/test/java/org/apache/ratis/grpc/server/TestGrpcServerMetrics.java
@@ -30,7 +30,7 @@ import static org.mockito.Mockito.when;
 import java.util.SortedMap;
 import java.util.function.Consumer;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.Gauge;
+import com.codahale.metrics.Gauge;
 import org.apache.ratis.grpc.metrics.GrpcServerMetrics;
 import org.apache.ratis.metrics.RatisMetricRegistry;
 import org.apache.ratis.proto.RaftProtos;
diff --git a/ratis-metrics/pom.xml b/ratis-metrics/pom.xml
index 25402f3ec..8742c7beb 100644
--- a/ratis-metrics/pom.xml
+++ b/ratis-metrics/pom.xml
@@ -55,5 +55,26 @@
       <artifactId>mockito-core</artifactId>
       <scope>test</scope>
     </dependency>
+
+    <dependency>
+      <groupId>io.dropwizard.metrics</groupId>
+      <artifactId>metrics-core</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>io.dropwizard.metrics</groupId>
+      <artifactId>metrics-jvm</artifactId>
+      <optional>true</optional>
+    </dependency>
+    <dependency>
+      <groupId>io.dropwizard.metrics</groupId>
+      <artifactId>metrics-ganglia</artifactId>
+      <exclusions>
+        <exclusion>
+          <groupId>org.acplt</groupId>
+          <artifactId>oncrpc</artifactId>
+        </exclusion>
+      </exclusions>
+      <optional>true</optional>
+    </dependency>
   </dependencies>
 </project>
diff --git a/ratis-metrics/src/main/java/org/apache/ratis/metrics/JVMMetrics.java b/ratis-metrics/src/main/java/org/apache/ratis/metrics/JVMMetrics.java
index 402b6df63..1e5ee846b 100644
--- a/ratis-metrics/src/main/java/org/apache/ratis/metrics/JVMMetrics.java
+++ b/ratis-metrics/src/main/java/org/apache/ratis/metrics/JVMMetrics.java
@@ -17,10 +17,10 @@
  */
 package org.apache.ratis.metrics;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.jvm.ClassLoadingGaugeSet;
-import org.apache.ratis.thirdparty.com.codahale.metrics.jvm.GarbageCollectorMetricSet;
-import org.apache.ratis.thirdparty.com.codahale.metrics.jvm.MemoryUsageGaugeSet;
-import org.apache.ratis.thirdparty.com.codahale.metrics.jvm.ThreadStatesGaugeSet;
+import com.codahale.metrics.jvm.ClassLoadingGaugeSet;
+import com.codahale.metrics.jvm.GarbageCollectorMetricSet;
+import com.codahale.metrics.jvm.MemoryUsageGaugeSet;
+import com.codahale.metrics.jvm.ThreadStatesGaugeSet;
 import org.apache.ratis.util.TimeDuration;
 
 /**
diff --git a/ratis-metrics/src/main/java/org/apache/ratis/metrics/MetricRegistryInfo.java b/ratis-metrics/src/main/java/org/apache/ratis/metrics/MetricRegistryInfo.java
index 5563b96d1..1d9f2f10b 100644
--- a/ratis-metrics/src/main/java/org/apache/ratis/metrics/MetricRegistryInfo.java
+++ b/ratis-metrics/src/main/java/org/apache/ratis/metrics/MetricRegistryInfo.java
@@ -21,7 +21,7 @@ package org.apache.ratis.metrics;
 
 import java.util.Objects;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.*;
+import com.codahale.metrics.MetricRegistry;
 
 /**
  *
diff --git a/ratis-metrics/src/main/java/org/apache/ratis/metrics/MetricsReporting.java b/ratis-metrics/src/main/java/org/apache/ratis/metrics/MetricsReporting.java
index df51420f0..e45cefa96 100644
--- a/ratis-metrics/src/main/java/org/apache/ratis/metrics/MetricsReporting.java
+++ b/ratis-metrics/src/main/java/org/apache/ratis/metrics/MetricsReporting.java
@@ -20,8 +20,9 @@ package org.apache.ratis.metrics;
 import java.util.concurrent.TimeUnit;
 import java.util.function.Consumer;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.*;
-import org.apache.ratis.thirdparty.com.codahale.metrics.jmx.JmxReporter;
+import com.codahale.metrics.ConsoleReporter;
+import com.codahale.metrics.JmxReporter;
+import com.codahale.metrics.JmxReporter.Builder;
 import org.apache.ratis.util.TimeDuration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -52,10 +53,9 @@ public final class MetricsReporting {
 
   public static Consumer<RatisMetricRegistry> jmxReporter() {
     return registry -> {
-      JmxReporter.Builder builder =
+      Builder builder =
           JmxReporter.forRegistry(registry.getDropWizardMetricRegistry());
       builder.inDomain(registry.getMetricRegistryInfo().getApplicationName());
-      builder.createsObjectNamesWith(new RatisObjectNameFactory());
       JmxReporter reporter = builder.build();
       reporter.start();
 
diff --git a/ratis-metrics/src/main/java/org/apache/ratis/metrics/RatisMetricRegistry.java b/ratis-metrics/src/main/java/org/apache/ratis/metrics/RatisMetricRegistry.java
index 388f9f4e0..03f419c56 100644
--- a/ratis-metrics/src/main/java/org/apache/ratis/metrics/RatisMetricRegistry.java
+++ b/ratis-metrics/src/main/java/org/apache/ratis/metrics/RatisMetricRegistry.java
@@ -19,8 +19,17 @@ package org.apache.ratis.metrics;
 
 import java.util.SortedMap;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.*;
-import org.apache.ratis.thirdparty.com.codahale.metrics.jmx.JmxReporter;
+import com.codahale.metrics.ConsoleReporter;
+import com.codahale.metrics.Counter;
+import com.codahale.metrics.Gauge;
+import com.codahale.metrics.Histogram;
+import com.codahale.metrics.JmxReporter;
+import com.codahale.metrics.Meter;
+import com.codahale.metrics.Metric;
+import com.codahale.metrics.MetricFilter;
+import com.codahale.metrics.MetricRegistry;
+import com.codahale.metrics.MetricSet;
+import com.codahale.metrics.Timer;
 import org.apache.ratis.thirdparty.com.google.common.annotations.VisibleForTesting;
 
 public interface RatisMetricRegistry {
diff --git a/ratis-metrics/src/main/java/org/apache/ratis/metrics/RatisObjectNameFactory.java b/ratis-metrics/src/main/java/org/apache/ratis/metrics/RatisObjectNameFactory.java
deleted file mode 100644
index dd790f6ac..000000000
--- a/ratis-metrics/src/main/java/org/apache/ratis/metrics/RatisObjectNameFactory.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ratis.metrics;
-
-import org.apache.ratis.thirdparty.com.codahale.metrics.jmx.JmxReporter;
-import org.apache.ratis.thirdparty.com.codahale.metrics.jmx.ObjectNameFactory;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.management.MalformedObjectNameException;
-import javax.management.ObjectName;
-
-public class RatisObjectNameFactory implements ObjectNameFactory {
-
-  private static final Logger LOGGER = LoggerFactory.getLogger(JmxReporter.class);
-
-  @Override
-  public ObjectName createName(String type, String domain, String name) {
-    try {
-      ObjectName objectName = new ObjectName(domain, "name", name);
-      if (objectName.isPattern()) {
-        objectName = new ObjectName(domain, "name", ObjectName.quote(name));
-      }
-      return objectName;
-    } catch (MalformedObjectNameException e) {
-      try {
-        return new ObjectName(domain, "name", ObjectName.quote(name));
-      } catch (MalformedObjectNameException e1) {
-        LOGGER.warn("Unable to register {} {}", type, name, e1);
-        throw new RuntimeException(e1);
-      }
-    }
-  }
-}
diff --git a/ratis-metrics/src/main/java/org/apache/ratis/metrics/impl/RatisMetricRegistryImpl.java b/ratis-metrics/src/main/java/org/apache/ratis/metrics/impl/RatisMetricRegistryImpl.java
index 1b33efb8d..3f213ba24 100644
--- a/ratis-metrics/src/main/java/org/apache/ratis/metrics/impl/RatisMetricRegistryImpl.java
+++ b/ratis-metrics/src/main/java/org/apache/ratis/metrics/impl/RatisMetricRegistryImpl.java
@@ -20,10 +20,20 @@ package org.apache.ratis.metrics.impl;
 import java.util.Map;
 import java.util.SortedMap;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.*;
+import com.codahale.metrics.ConsoleReporter;
+import com.codahale.metrics.Counter;
+import com.codahale.metrics.Gauge;
+import com.codahale.metrics.Histogram;
+import com.codahale.metrics.JmxReporter;
+import com.codahale.metrics.Meter;
+import com.codahale.metrics.Metric;
+import com.codahale.metrics.MetricFilter;
+import com.codahale.metrics.MetricRegistry;
+import com.codahale.metrics.MetricRegistry.MetricSupplier;
+import com.codahale.metrics.MetricSet;
+import com.codahale.metrics.Timer;
 import org.apache.ratis.metrics.MetricRegistryInfo;
 import org.apache.ratis.metrics.RatisMetricRegistry;
-import org.apache.ratis.thirdparty.com.codahale.metrics.jmx.JmxReporter;
 import org.apache.ratis.thirdparty.com.google.common.annotations.VisibleForTesting;
 
 /**
@@ -57,11 +67,11 @@ public class RatisMetricRegistryImpl implements RatisMetricRegistry {
     return metricRegistry.remove(getMetricName(name));
   }
 
-  @Override public Gauge gauge(String name, MetricRegistry.MetricSupplier<Gauge> supplier) {
+  @Override public Gauge gauge(String name, MetricSupplier<Gauge> supplier) {
     return metricRegistry.gauge(getMetricName(name), supplier);
   }
 
-  @Override public Timer timer(String name, MetricRegistry.MetricSupplier<Timer> supplier) {
+  @Override public Timer timer(String name, MetricSupplier<Timer> supplier) {
     return metricRegistry.timer(getMetricName(name), supplier);
   }
 
@@ -69,7 +79,7 @@ public class RatisMetricRegistryImpl implements RatisMetricRegistry {
     return metricRegistry.getGauges(filter);
   }
 
-  @Override public Counter counter(String name, MetricRegistry.MetricSupplier<Counter> supplier) {
+  @Override public Counter counter(String name, MetricSupplier<Counter> supplier) {
     return metricRegistry.counter(getMetricName(name), supplier);
   }
 
@@ -81,7 +91,7 @@ public class RatisMetricRegistryImpl implements RatisMetricRegistry {
     return metricRegistry.meter(getMetricName(name));
   }
 
-  @Override public Meter meter(String name, MetricRegistry.MetricSupplier<Meter> supplier) {
+  @Override public Meter meter(String name, MetricSupplier<Meter> supplier) {
     return metricRegistry.meter(getMetricName(name), supplier);
   }
 
diff --git a/ratis-netty/src/main/java/org/apache/ratis/netty/metrics/NettyServerStreamRpcMetrics.java b/ratis-netty/src/main/java/org/apache/ratis/netty/metrics/NettyServerStreamRpcMetrics.java
index 6c8125508..33f36328e 100644
--- a/ratis-netty/src/main/java/org/apache/ratis/netty/metrics/NettyServerStreamRpcMetrics.java
+++ b/ratis-netty/src/main/java/org/apache/ratis/netty/metrics/NettyServerStreamRpcMetrics.java
@@ -17,7 +17,7 @@
  */
 package org.apache.ratis.netty.metrics;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.Timer;
+import com.codahale.metrics.Timer;
 import org.apache.ratis.metrics.MetricRegistryInfo;
 import org.apache.ratis.metrics.RatisMetricRegistry;
 import org.apache.ratis.metrics.RatisMetrics;
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/impl/LeaderElection.java b/ratis-server/src/main/java/org/apache/ratis/server/impl/LeaderElection.java
index 73d8c0cdf..5ed18975e 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/impl/LeaderElection.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/impl/LeaderElection.java
@@ -58,7 +58,7 @@ import static org.apache.ratis.util.LifeCycle.State.NEW;
 import static org.apache.ratis.util.LifeCycle.State.RUNNING;
 import static org.apache.ratis.util.LifeCycle.State.STARTING;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.Timer;
+import com.codahale.metrics.Timer;
 
 /**
  * For a candidate to start an election for becoming the leader.
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerImpl.java b/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerImpl.java
index 4c798d9d5..ee314dbe2 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerImpl.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerImpl.java
@@ -92,7 +92,7 @@ import static org.apache.ratis.util.LifeCycle.State.PAUSING;
 import static org.apache.ratis.util.LifeCycle.State.RUNNING;
 import static org.apache.ratis.util.LifeCycle.State.STARTING;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.Timer;
+import com.codahale.metrics.Timer;
 import org.apache.ratis.util.function.CheckedSupplier;
 
 class RaftServerImpl implements RaftServer.Division,
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/impl/StateMachineMetrics.java b/ratis-server/src/main/java/org/apache/ratis/server/impl/StateMachineMetrics.java
index 3466f3f67..02aaefa6f 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/impl/StateMachineMetrics.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/impl/StateMachineMetrics.java
@@ -26,7 +26,7 @@ import org.apache.ratis.statemachine.StateMachine;
 
 import java.util.function.LongSupplier;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.Timer;
+import com.codahale.metrics.Timer;
 
 /**
  * Metrics Registry for the State Machine Updater. One instance per group.
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/impl/StateMachineUpdater.java b/ratis-server/src/main/java/org/apache/ratis/server/impl/StateMachineUpdater.java
index 1d9b85e79..87aac06b2 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/impl/StateMachineUpdater.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/impl/StateMachineUpdater.java
@@ -46,7 +46,7 @@ import java.util.concurrent.atomic.AtomicReference;
 import java.util.function.Consumer;
 import java.util.stream.LongStream;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.Timer;
+import com.codahale.metrics.Timer;
 
 /**
  * This class tracks the log entries that have been committed in a quorum and
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/metrics/LeaderElectionMetrics.java b/ratis-server/src/main/java/org/apache/ratis/server/metrics/LeaderElectionMetrics.java
index 8b1b701a2..ef4ca8d33 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/metrics/LeaderElectionMetrics.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/metrics/LeaderElectionMetrics.java
@@ -24,7 +24,7 @@ import org.apache.ratis.metrics.RatisMetrics;
 import org.apache.ratis.protocol.RaftGroupMemberId;
 import org.apache.ratis.util.Timestamp;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.Timer;
+import com.codahale.metrics.Timer;
 
 import java.util.Optional;
 import java.util.function.LongSupplier;
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/metrics/RaftLogMetricsBase.java b/ratis-server/src/main/java/org/apache/ratis/server/metrics/RaftLogMetricsBase.java
index fc40082fb..aef6398d8 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/metrics/RaftLogMetricsBase.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/metrics/RaftLogMetricsBase.java
@@ -18,7 +18,7 @@
 
 package org.apache.ratis.server.metrics;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.*;
+import com.codahale.metrics.Timer;
 import org.apache.ratis.metrics.MetricRegistryInfo;
 import org.apache.ratis.metrics.RatisMetricRegistry;
 import org.apache.ratis.metrics.RatisMetrics;
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/metrics/RaftServerMetricsImpl.java b/ratis-server/src/main/java/org/apache/ratis/server/metrics/RaftServerMetricsImpl.java
index 210bf7d1e..4a0a9f336 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/metrics/RaftServerMetricsImpl.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/metrics/RaftServerMetricsImpl.java
@@ -26,9 +26,9 @@ import java.util.SortedMap;
 import java.util.function.Function;
 import java.util.function.Supplier;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.Counter;
-import org.apache.ratis.thirdparty.com.codahale.metrics.Gauge;
-import org.apache.ratis.thirdparty.com.codahale.metrics.Timer;
+import com.codahale.metrics.Counter;
+import com.codahale.metrics.Gauge;
+import com.codahale.metrics.Timer;
 
 import org.apache.ratis.metrics.MetricRegistryInfo;
 import org.apache.ratis.metrics.RatisMetricRegistry;
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/metrics/SegmentedRaftLogMetrics.java b/ratis-server/src/main/java/org/apache/ratis/server/metrics/SegmentedRaftLogMetrics.java
index 80ad0df58..f359e1a0b 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/metrics/SegmentedRaftLogMetrics.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/metrics/SegmentedRaftLogMetrics.java
@@ -18,7 +18,9 @@
 
 package org.apache.ratis.server.metrics;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.*;
+import com.codahale.metrics.Gauge;
+import com.codahale.metrics.MetricRegistry;
+import com.codahale.metrics.Timer;
 import org.apache.ratis.protocol.RaftGroupMemberId;
 import org.apache.ratis.server.raftlog.segmented.SegmentedRaftLogCache;
 import org.apache.ratis.util.DataQueue;
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLog.java b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLog.java
index 74d6a8c03..0cb613ac0 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLog.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLog.java
@@ -50,7 +50,7 @@ import java.util.concurrent.CompletionException;
 import java.util.function.Consumer;
 import java.util.function.LongSupplier;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.Timer;
+import com.codahale.metrics.Timer;
 
 /**
  * The RaftLog implementation that writes log entries into segmented files in
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLogReader.java b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLogReader.java
index 98cd9022d..dc67d31c4 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLogReader.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLogReader.java
@@ -35,7 +35,7 @@ import java.io.*;
 import java.util.Optional;
 import java.util.zip.Checksum;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.Timer;
+import com.codahale.metrics.Timer;
 
 class SegmentedRaftLogReader implements Closeable {
   static final Logger LOG = LoggerFactory.getLogger(SegmentedRaftLogReader.class);
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLogWorker.java b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLogWorker.java
index 599772f12..3bc2b593b 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLogWorker.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLogWorker.java
@@ -17,8 +17,8 @@
  */
 package org.apache.ratis.server.raftlog.segmented;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.Timer;
-import org.apache.ratis.thirdparty.com.codahale.metrics.Gauge;
+import com.codahale.metrics.Gauge;
+import com.codahale.metrics.Timer;
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import org.apache.ratis.conf.RaftProperties;
 import org.apache.ratis.proto.RaftProtos.StateMachineLogEntryProto;
diff --git a/ratis-server/src/main/java/org/apache/ratis/statemachine/impl/BaseStateMachine.java b/ratis-server/src/main/java/org/apache/ratis/statemachine/impl/BaseStateMachine.java
index 629a55a67..a6fe5057f 100644
--- a/ratis-server/src/main/java/org/apache/ratis/statemachine/impl/BaseStateMachine.java
+++ b/ratis-server/src/main/java/org/apache/ratis/statemachine/impl/BaseStateMachine.java
@@ -18,7 +18,7 @@
 
 package org.apache.ratis.statemachine.impl;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.Timer;
+import com.codahale.metrics.Timer;
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import org.apache.ratis.proto.RaftProtos;
 import org.apache.ratis.protocol.Message;
diff --git a/ratis-server/src/test/java/org/apache/ratis/LogAppenderTests.java b/ratis-server/src/test/java/org/apache/ratis/LogAppenderTests.java
index b187dabae..0a0fdbe37 100644
--- a/ratis-server/src/test/java/org/apache/ratis/LogAppenderTests.java
+++ b/ratis-server/src/test/java/org/apache/ratis/LogAppenderTests.java
@@ -54,7 +54,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicLong;
 import java.util.concurrent.atomic.AtomicReference;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.Gauge;
+import com.codahale.metrics.Gauge;
 
 public abstract class LogAppenderTests<CLUSTER extends MiniRaftCluster>
     extends BaseTest
diff --git a/ratis-server/src/test/java/org/apache/ratis/RaftBasicTests.java b/ratis-server/src/test/java/org/apache/ratis/RaftBasicTests.java
index 5f09c86d2..7fdd4b9d1 100644
--- a/ratis-server/src/test/java/org/apache/ratis/RaftBasicTests.java
+++ b/ratis-server/src/test/java/org/apache/ratis/RaftBasicTests.java
@@ -17,7 +17,7 @@
  */
 package org.apache.ratis;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.Gauge;
+import com.codahale.metrics.Gauge;
 import org.apache.log4j.Level;
 import org.apache.ratis.RaftTestUtil.SimpleMessage;
 import org.apache.ratis.client.RaftClient;
diff --git a/ratis-server/src/test/java/org/apache/ratis/server/impl/LeaderElectionTests.java b/ratis-server/src/test/java/org/apache/ratis/server/impl/LeaderElectionTests.java
index 6b5d04b24..e431588ef 100644
--- a/ratis-server/src/test/java/org/apache/ratis/server/impl/LeaderElectionTests.java
+++ b/ratis-server/src/test/java/org/apache/ratis/server/impl/LeaderElectionTests.java
@@ -70,7 +70,7 @@ import static org.junit.Assert.assertNotNull;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.Timer;
+import com.codahale.metrics.Timer;
 
 public abstract class LeaderElectionTests<CLUSTER extends MiniRaftCluster>
     extends BaseTest
diff --git a/ratis-server/src/test/java/org/apache/ratis/server/impl/TestLogAppenderMetrics.java b/ratis-server/src/test/java/org/apache/ratis/server/impl/TestLogAppenderMetrics.java
index 07870f981..30c547b95 100644
--- a/ratis-server/src/test/java/org/apache/ratis/server/impl/TestLogAppenderMetrics.java
+++ b/ratis-server/src/test/java/org/apache/ratis/server/impl/TestLogAppenderMetrics.java
@@ -31,7 +31,7 @@ import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.Gauge;
+import com.codahale.metrics.Gauge;
 
 public class TestLogAppenderMetrics {
 
diff --git a/ratis-server/src/test/java/org/apache/ratis/server/impl/TestRetryCacheMetrics.java b/ratis-server/src/test/java/org/apache/ratis/server/impl/TestRetryCacheMetrics.java
index 93d466b52..37032381b 100644
--- a/ratis-server/src/test/java/org/apache/ratis/server/impl/TestRetryCacheMetrics.java
+++ b/ratis-server/src/test/java/org/apache/ratis/server/impl/TestRetryCacheMetrics.java
@@ -21,7 +21,7 @@ package org.apache.ratis.server.impl;
 import static org.apache.ratis.server.metrics.RaftServerMetricsImpl.*;
 import static org.junit.Assert.assertEquals;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.Gauge;
+import com.codahale.metrics.Gauge;
 import org.apache.ratis.metrics.RatisMetricRegistry;
 import org.apache.ratis.protocol.ClientInvocationId;
 import org.apache.ratis.protocol.ClientId;
diff --git a/ratis-server/src/test/java/org/apache/ratis/server/metrics/TestLeaderElectionMetrics.java b/ratis-server/src/test/java/org/apache/ratis/server/metrics/TestLeaderElectionMetrics.java
index 392b4e45a..627078452 100644
--- a/ratis-server/src/test/java/org/apache/ratis/server/metrics/TestLeaderElectionMetrics.java
+++ b/ratis-server/src/test/java/org/apache/ratis/server/metrics/TestLeaderElectionMetrics.java
@@ -23,8 +23,6 @@ import static org.apache.ratis.server.metrics.LeaderElectionMetrics.LEADER_ELECT
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.Gauge;
-import org.apache.ratis.BaseTest;
 import org.apache.ratis.metrics.RatisMetricRegistry;
 import org.apache.ratis.protocol.RaftGroupId;
 import org.apache.ratis.protocol.RaftGroupMemberId;
@@ -32,12 +30,10 @@ import org.apache.ratis.protocol.RaftPeerId;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
-import java.util.SortedMap;
-
 /**
  * Test for LeaderElectionMetrics.
  */
-public class TestLeaderElectionMetrics extends BaseTest {
+public class TestLeaderElectionMetrics {
 
   private static LeaderElectionMetrics leaderElectionMetrics;
   private static RatisMetricRegistry ratisMetricRegistry;
@@ -54,11 +50,9 @@ public class TestLeaderElectionMetrics extends BaseTest {
   @Test
   public void testOnLeaderElectionCompletion() throws Exception {
     leaderElectionMetrics.onNewLeaderElectionCompletion();
-    final SortedMap<String, Gauge> gauges = ratisMetricRegistry.getGauges(
-        (s, metric) -> s.contains(LAST_LEADER_ELECTION_ELAPSED_TIME));
-    LOG.info("{} gauges: {}", LAST_LEADER_ELECTION_ELAPSED_TIME, gauges);
-    final Long leaderElectionLatency = (Long)gauges.values().iterator().next().getValue();
-    assertTrue("leaderElectionLatency = " + leaderElectionLatency, leaderElectionLatency >= 0L);
+    Long leaderElectionLatency = (Long) ratisMetricRegistry.getGauges((s, metric) ->
+        s.contains(LAST_LEADER_ELECTION_ELAPSED_TIME)).values().iterator().next().getValue();
+    assertTrue(leaderElectionLatency > 0L);
   }
 
   @Test
diff --git a/ratis-server/src/test/java/org/apache/ratis/statemachine/RaftSnapshotBaseTest.java b/ratis-server/src/test/java/org/apache/ratis/statemachine/RaftSnapshotBaseTest.java
index d168b7e2f..9538be62c 100644
--- a/ratis-server/src/test/java/org/apache/ratis/statemachine/RaftSnapshotBaseTest.java
+++ b/ratis-server/src/test/java/org/apache/ratis/statemachine/RaftSnapshotBaseTest.java
@@ -61,8 +61,8 @@ import java.util.Optional;
 import java.util.stream.Collectors;
 import java.util.stream.LongStream;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.Counter;
-import org.apache.ratis.thirdparty.com.codahale.metrics.Timer;
+import com.codahale.metrics.Counter;
+import com.codahale.metrics.Timer;
 
 public abstract class RaftSnapshotBaseTest extends BaseTest {
   {
diff --git a/ratis-test/pom.xml b/ratis-test/pom.xml
index db72969eb..0a13d01d3 100644
--- a/ratis-test/pom.xml
+++ b/ratis-test/pom.xml
@@ -99,6 +99,12 @@
       <artifactId>mockito-core</artifactId>
       <scope>test</scope>
     </dependency>
+
+    <dependency>
+      <groupId>io.dropwizard.metrics</groupId>
+      <artifactId>metrics-jvm</artifactId>
+      <scope>test</scope>
+    </dependency>
     <dependency>
       <groupId>org.apache.ratis</groupId>
       <artifactId>ratis-shell</artifactId>
diff --git a/ratis-test/src/test/java/org/apache/ratis/TestRaftServerSlownessDetection.java b/ratis-test/src/test/java/org/apache/ratis/TestRaftServerSlownessDetection.java
index 9b850e275..fded493bd 100644
--- a/ratis-test/src/test/java/org/apache/ratis/TestRaftServerSlownessDetection.java
+++ b/ratis-test/src/test/java/org/apache/ratis/TestRaftServerSlownessDetection.java
@@ -44,7 +44,7 @@ import java.util.List;
 import java.util.SortedMap;
 import java.util.concurrent.TimeUnit;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.Gauge;
+import com.codahale.metrics.Gauge;
 
 /**
  * Test Raft Server Slowness detection and notification to Leader's statemachine.
diff --git a/ratis-test/src/test/java/org/apache/ratis/grpc/TestRaftServerWithGrpc.java b/ratis-test/src/test/java/org/apache/ratis/grpc/TestRaftServerWithGrpc.java
index bcf70f169..8c92094e2 100644
--- a/ratis-test/src/test/java/org/apache/ratis/grpc/TestRaftServerWithGrpc.java
+++ b/ratis-test/src/test/java/org/apache/ratis/grpc/TestRaftServerWithGrpc.java
@@ -26,7 +26,7 @@ import static org.apache.ratis.server.metrics.RaftServerMetricsImpl.REQUEST_MEGA
 import static org.apache.ratis.server.metrics.RaftServerMetricsImpl.REQUEST_BYTE_SIZE_LIMIT_HIT_COUNTER;
 import static org.apache.ratis.server.metrics.RaftServerMetricsImpl.RESOURCE_LIMIT_HIT_COUNTER;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.Gauge;
+import com.codahale.metrics.Gauge;
 import org.apache.log4j.Level;
 import org.apache.ratis.BaseTest;
 import org.apache.ratis.protocol.RaftGroup;
diff --git a/ratis-test/src/test/java/org/apache/ratis/grpc/TestRaftSnapshotWithGrpc.java b/ratis-test/src/test/java/org/apache/ratis/grpc/TestRaftSnapshotWithGrpc.java
index 2c72df09f..38301772d 100644
--- a/ratis-test/src/test/java/org/apache/ratis/grpc/TestRaftSnapshotWithGrpc.java
+++ b/ratis-test/src/test/java/org/apache/ratis/grpc/TestRaftSnapshotWithGrpc.java
@@ -27,7 +27,7 @@ import org.apache.ratis.server.RaftServer;
 import org.apache.ratis.statemachine.RaftSnapshotBaseTest;
 import org.junit.Assert;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.Counter;
+import com.codahale.metrics.Counter;
 
 public class TestRaftSnapshotWithGrpc extends RaftSnapshotBaseTest {
   @Override
diff --git a/ratis-test/src/test/java/org/apache/ratis/server/raftlog/TestRaftLogMetrics.java b/ratis-test/src/test/java/org/apache/ratis/server/raftlog/TestRaftLogMetrics.java
index 92a9a90dd..e5f7f7055 100644
--- a/ratis-test/src/test/java/org/apache/ratis/server/raftlog/TestRaftLogMetrics.java
+++ b/ratis-test/src/test/java/org/apache/ratis/server/raftlog/TestRaftLogMetrics.java
@@ -17,7 +17,7 @@
  */
 package org.apache.ratis.server.raftlog;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.Timer;
+import com.codahale.metrics.Timer;
 import org.apache.ratis.BaseTest;
 import org.apache.ratis.RaftTestUtil;
 import org.apache.ratis.client.RaftClient;
diff --git a/ratis-test/src/test/java/org/apache/ratis/server/raftlog/segmented/TestLogSegment.java b/ratis-test/src/test/java/org/apache/ratis/server/raftlog/segmented/TestLogSegment.java
index ba24f8997..724c2d3b8 100644
--- a/ratis-test/src/test/java/org/apache/ratis/server/raftlog/segmented/TestLogSegment.java
+++ b/ratis-test/src/test/java/org/apache/ratis/server/raftlog/segmented/TestLogSegment.java
@@ -52,7 +52,7 @@ import java.util.concurrent.ThreadLocalRandom;
 import static org.apache.ratis.server.raftlog.RaftLog.INVALID_LOG_INDEX;
 import static org.apache.ratis.server.raftlog.segmented.LogSegment.getEntrySize;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.Timer;
+import com.codahale.metrics.Timer;
 
 /**
  * Test basic functionality of {@link LogSegment}
diff --git a/ratis-test/src/test/java/org/apache/ratis/server/raftlog/segmented/TestSegmentedRaftLog.java b/ratis-test/src/test/java/org/apache/ratis/server/raftlog/segmented/TestSegmentedRaftLog.java
index 2600e351e..6643dbdf3 100644
--- a/ratis-test/src/test/java/org/apache/ratis/server/raftlog/segmented/TestSegmentedRaftLog.java
+++ b/ratis-test/src/test/java/org/apache/ratis/server/raftlog/segmented/TestSegmentedRaftLog.java
@@ -68,9 +68,9 @@ import java.util.concurrent.TimeUnit;
 import java.util.function.LongSupplier;
 import java.util.function.Supplier;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.Timer;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
+import com.codahale.metrics.Timer;
 
 @RunWith(Parameterized.class)
 public class TestSegmentedRaftLog extends BaseTest {