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

[ratis] branch master updated: RATIS-1689. Remove the use of the thirdparty Gauge. (#724)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 0c647c60b RATIS-1689. Remove the use of the thirdparty Gauge. (#724)
0c647c60b is described below

commit 0c647c60b353d4b33d1c79ce127bbbb9802b206b
Author: Tsz-Wo Nicholas Sze <sz...@apache.org>
AuthorDate: Fri Aug 26 09:53:49 2022 -0700

    RATIS-1689. Remove the use of the thirdparty Gauge. (#724)
---
 .../ratis/grpc/metrics/GrpcServerMetrics.java      | 12 ++---
 .../ratis/grpc/server/TestGrpcServerMetrics.java   | 23 +++------
 .../apache/ratis/metrics/MetricRegistryInfo.java   |  5 +-
 .../org/apache/ratis/metrics/MetricsReporting.java |  8 ++--
 .../apache/ratis/metrics/RatisMetricRegistry.java  | 19 +++++---
 .../metrics/impl/RatisMetricRegistryImpl.java      | 35 ++++++++++----
 .../ratis/server/impl/StateMachineMetrics.java     |  6 +--
 .../ratis/server/metrics/RaftLogMetricsBase.java   |  2 +-
 .../server/metrics/RaftServerMetricsImpl.java      | 30 ++----------
 .../server/metrics/SegmentedRaftLogMetrics.java    | 23 ++++-----
 .../raftlog/segmented/SegmentedRaftLogWorker.java  |  5 +-
 .../java/org/apache/ratis/LogAppenderTests.java    |  9 ++--
 .../test/java/org/apache/ratis/RaftBasicTests.java | 16 ++-----
 .../ratis/server/impl/LeaderElectionTests.java     |  6 +--
 .../ratis/server/impl/TestLogAppenderMetrics.java  |  6 +--
 .../ratis/server/impl/TestRetryCacheMetrics.java   |  6 +--
 .../server/metrics/ServerMetricsTestUtils.java     | 55 ++++++++++++++++++++++
 .../server/metrics/TestLeaderElectionMetrics.java  |  6 +--
 .../ratis/TestRaftServerSlownessDetection.java     |  7 ++-
 .../apache/ratis/grpc/TestRaftServerWithGrpc.java  |  8 ----
 .../segmented/TestSegmentedRaftLogCache.java       |  6 +--
 21 files changed, 156 insertions(+), 137 deletions(-)

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..dcc2d309f 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,14 +17,14 @@
  */
 package org.apache.ratis.grpc.metrics;
 
-import org.apache.ratis.thirdparty.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 java.util.function.Supplier;
+
 public class GrpcServerMetrics extends RatisMetrics {
   private static final String RATIS_GRPC_METRICS_APP_NAME = "ratis_grpc";
   private static final String RATIS_GRPC_METRICS_COMP_NAME = "log_appender";
@@ -89,8 +89,7 @@ public class GrpcServerMetrics extends RatisMetrics {
         follower)).inc();
   }
 
-  public void addPendingRequestsCount(String follower,
-      Gauge pendinglogQueueSize) {
+  public void addPendingRequestsCount(String follower, Supplier<Integer> pendinglogQueueSize) {
     registry.gauge(String.format(RATIS_GRPC_METRICS_LOG_APPENDER_PENDING_COUNT, follower), () -> pendinglogQueueSize);
   }
 
@@ -101,9 +100,4 @@ public class GrpcServerMetrics extends RatisMetrics {
   public static String getHeartbeatSuffix(boolean heartbeat) {
     return heartbeat ? "_heartbeat" : "";
   }
-
-  @VisibleForTesting
-  public RatisMetricRegistry getRegistry() {
-    return registry;
-  }
 }
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..7cd10bc5d 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
@@ -27,16 +27,16 @@ import static org.apache.ratis.grpc.metrics.GrpcServerMetrics.RATIS_GRPC_METRICS
 import static org.apache.ratis.grpc.metrics.GrpcServerMetrics.RATIS_GRPC_METRICS_REQUEST_RETRY_COUNT;
 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 org.apache.ratis.server.metrics.ServerMetricsTestUtils;
 import org.apache.ratis.grpc.metrics.GrpcServerMetrics;
 import org.apache.ratis.metrics.RatisMetricRegistry;
 import org.apache.ratis.proto.RaftProtos;
 import org.apache.ratis.protocol.RaftGroupId;
 import org.apache.ratis.protocol.RaftGroupMemberId;
 import org.apache.ratis.protocol.RaftPeerId;
+import org.apache.ratis.thirdparty.com.codahale.metrics.Gauge;
 import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -109,21 +109,12 @@ public class TestGrpcServerMetrics {
     GrpcLogAppender.RequestMap pendingRequest = Mockito.mock(GrpcLogAppender.RequestMap.class);
     when(pendingRequest.logRequestsSize()).thenReturn(0);
     grpcServerMetrics.addPendingRequestsCount(raftPeerId.toString(),
-        () -> pendingRequest.logRequestsSize());
-    Assert.assertEquals(0, getGuageWithName(
-            String.format(RATIS_GRPC_METRICS_LOG_APPENDER_PENDING_COUNT,
-                raftPeerId.toString())).getValue());
+        pendingRequest::logRequestsSize);
+    final String name = String.format(RATIS_GRPC_METRICS_LOG_APPENDER_PENDING_COUNT, raftPeerId);
+    final Gauge gauge = ServerMetricsTestUtils.getGaugeWithName(name, grpcServerMetrics::getRegistry);
+    Assert.assertEquals(0, gauge.getValue());
     when(pendingRequest.logRequestsSize()).thenReturn(10);
-    Assert.assertEquals(10, getGuageWithName(
-            String.format(RATIS_GRPC_METRICS_LOG_APPENDER_PENDING_COUNT,
-                raftPeerId.toString())).getValue());
-  }
-
-  private Gauge getGuageWithName(String gaugeName) {
-    SortedMap<String, Gauge> gaugeMap =
-        grpcServerMetrics.getRegistry().getGauges((s, metric) ->
-            s.contains(gaugeName));
-    return gaugeMap.get(gaugeMap.firstKey());
+    Assert.assertEquals(10, gauge.getValue());
   }
 
   @Test
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..70efac627 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
@@ -1,4 +1,4 @@
-/**
+/*
  * 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
@@ -18,11 +18,10 @@
 
 package org.apache.ratis.metrics;
 
+import org.apache.ratis.thirdparty.com.codahale.metrics.MetricRegistry;
 
 import java.util.Objects;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.*;
-
 /**
  *
  * This class holds the name and description and JMX related context names for such group of
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..efaa1a45d 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
@@ -17,15 +17,15 @@
  */
 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.ConsoleReporter;
 import org.apache.ratis.thirdparty.com.codahale.metrics.jmx.JmxReporter;
 import org.apache.ratis.util.TimeDuration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.concurrent.TimeUnit;
+import java.util.function.Consumer;
+
 public final class MetricsReporting {
   public static final Logger LOG = LoggerFactory.getLogger(MetricsReporting.class);
 
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..1745413be 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
@@ -1,4 +1,4 @@
-/**
+/*
  * 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
@@ -17,12 +17,19 @@
  */
 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.ConsoleReporter;
+import org.apache.ratis.thirdparty.com.codahale.metrics.Counter;
+import org.apache.ratis.thirdparty.com.codahale.metrics.Histogram;
+import org.apache.ratis.thirdparty.com.codahale.metrics.Meter;
+import org.apache.ratis.thirdparty.com.codahale.metrics.Metric;
+import org.apache.ratis.thirdparty.com.codahale.metrics.MetricRegistry;
+import org.apache.ratis.thirdparty.com.codahale.metrics.MetricSet;
+import org.apache.ratis.thirdparty.com.codahale.metrics.Timer;
 import org.apache.ratis.thirdparty.com.codahale.metrics.jmx.JmxReporter;
 import org.apache.ratis.thirdparty.com.google.common.annotations.VisibleForTesting;
 
+import java.util.function.Supplier;
+
 public interface RatisMetricRegistry {
   Timer timer(String name);
 
@@ -30,12 +37,10 @@ public interface RatisMetricRegistry {
 
   boolean remove(String name);
 
-  Gauge gauge(String name, MetricRegistry.MetricSupplier<Gauge> supplier);
+  <T> Supplier<T> gauge(String name, Supplier<Supplier<T>> gaugeSupplier);
 
   Timer timer(String name, MetricRegistry.MetricSupplier<Timer> supplier);
 
-  SortedMap<String, Gauge> getGauges(MetricFilter filter);
-
   Counter counter(String name, MetricRegistry.MetricSupplier<Counter> supplier);
 
   Histogram histogram(String name);
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..fe023eb29 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
@@ -1,4 +1,4 @@
-/**
+/*
  * 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
@@ -17,20 +17,30 @@
  */
 package org.apache.ratis.metrics.impl;
 
-import java.util.Map;
-import java.util.SortedMap;
-
-import org.apache.ratis.thirdparty.com.codahale.metrics.*;
 import org.apache.ratis.metrics.MetricRegistryInfo;
 import org.apache.ratis.metrics.RatisMetricRegistry;
+import org.apache.ratis.thirdparty.com.codahale.metrics.ConsoleReporter;
+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.Histogram;
+import org.apache.ratis.thirdparty.com.codahale.metrics.Meter;
+import org.apache.ratis.thirdparty.com.codahale.metrics.Metric;
+import org.apache.ratis.thirdparty.com.codahale.metrics.MetricFilter;
+import org.apache.ratis.thirdparty.com.codahale.metrics.MetricRegistry;
+import org.apache.ratis.thirdparty.com.codahale.metrics.MetricSet;
+import org.apache.ratis.thirdparty.com.codahale.metrics.Timer;
 import org.apache.ratis.thirdparty.com.codahale.metrics.jmx.JmxReporter;
 import org.apache.ratis.thirdparty.com.google.common.annotations.VisibleForTesting;
 
+import java.util.Map;
+import java.util.SortedMap;
+import java.util.function.Supplier;
+
 /**
  * Custom implementation of {@link MetricRegistry}.
  */
 public class RatisMetricRegistryImpl implements RatisMetricRegistry {
-  private MetricRegistry metricRegistry = new MetricRegistry();
+  private final MetricRegistry metricRegistry = new MetricRegistry();
 
   private final MetricRegistryInfo info;
 
@@ -57,15 +67,22 @@ public class RatisMetricRegistryImpl implements RatisMetricRegistry {
     return metricRegistry.remove(getMetricName(name));
   }
 
-  @Override public Gauge gauge(String name, MetricRegistry.MetricSupplier<Gauge> supplier) {
-    return metricRegistry.gauge(getMetricName(name), supplier);
+  static <T> Gauge<T> toGauge(Supplier<T> supplier) {
+    return supplier::get;
+  }
+
+  @Override
+  public <T> Supplier<T> gauge(String name, Supplier<Supplier<T>> gaugeSupplier) {
+    final MetricRegistry.MetricSupplier<Gauge<T>> s = () -> toGauge(gaugeSupplier.get());
+    final Gauge<T> g = metricRegistry.gauge(getMetricName(name), s);
+    return g::getValue;
   }
 
   @Override public Timer timer(String name, MetricRegistry.MetricSupplier<Timer> supplier) {
     return metricRegistry.timer(getMetricName(name), supplier);
   }
 
-  @Override public SortedMap<String, Gauge> getGauges(MetricFilter filter) {
+  public SortedMap<String, Gauge> getGauges(MetricFilter filter) {
     return metricRegistry.getGauges(filter);
   }
 
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..596cdaf5a 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
@@ -56,10 +56,8 @@ public final class StateMachineMetrics extends RatisMetrics {
   private StateMachineMetrics(String serverId, LongSupplier getApplied,
       LongSupplier getApplyCompleted) {
     registry = getMetricRegistryForStateMachine(serverId);
-    registry.gauge(STATEMACHINE_APPLIED_INDEX_GAUGE,
-        () -> () -> getApplied.getAsLong());
-    registry.gauge(STATEMACHINE_APPLY_COMPLETED_GAUGE,
-        () -> () -> getApplyCompleted.getAsLong());
+    registry.gauge(STATEMACHINE_APPLIED_INDEX_GAUGE, () -> getApplied::getAsLong);
+    registry.gauge(STATEMACHINE_APPLY_COMPLETED_GAUGE, () -> getApplyCompleted::getAsLong);
   }
 
   private RatisMetricRegistry getMetricRegistryForStateMachine(String serverId) {
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..c21ae08a6 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,12 +18,12 @@
 
 package org.apache.ratis.server.metrics;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.*;
 import org.apache.ratis.metrics.MetricRegistryInfo;
 import org.apache.ratis.metrics.RatisMetricRegistry;
 import org.apache.ratis.metrics.RatisMetrics;
 import org.apache.ratis.protocol.RaftGroupMemberId;
 import org.apache.ratis.server.raftlog.LogEntryHeader;
+import org.apache.ratis.thirdparty.com.codahale.metrics.Timer;
 
 public class RaftLogMetricsBase extends RatisMetrics implements RaftLogMetrics {
   public static final String RATIS_LOG_WORKER_METRICS_DESC = "Metrics for Log Worker";
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..35e35c1cd 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
@@ -22,12 +22,10 @@ import java.util.Optional;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.HashMap;
 import java.util.Map;
-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 org.apache.ratis.metrics.MetricRegistryInfo;
@@ -40,7 +38,6 @@ import org.apache.ratis.protocol.RaftPeerId;
 import org.apache.ratis.metrics.RatisMetrics;
 import org.apache.ratis.server.RetryCache;
 import org.apache.ratis.thirdparty.com.google.common.annotations.VisibleForTesting;
-import org.apache.ratis.util.Preconditions;
 
 /**
  * Metric Registry for Raft Group Server. One instance per leader/follower.
@@ -88,7 +85,7 @@ public final class RaftServerMetricsImpl extends RatisMetrics implements RaftSer
   /** id -> key */
   private static final Map<RaftPeerId, String> PEER_COMMIT_INDEX_GAUGE_KEYS = new ConcurrentHashMap<>();
 
-  private static String getPeerCommitIndexGaugeKey(RaftPeerId serverId) {
+  static String getPeerCommitIndexGaugeKey(RaftPeerId serverId) {
     return PEER_COMMIT_INDEX_GAUGE_KEYS.computeIfAbsent(serverId,
         key -> String.format(LEADER_METRIC_PEER_COMMIT_INDEX, key));
   }
@@ -152,26 +149,9 @@ public final class RaftServerMetricsImpl extends RatisMetrics implements RaftSer
         .orElse(0L));
   }
 
-  /**
-   * Get the commit index gauge for the given peer of the server
-   * @return Metric Gauge holding the value of commit index of the peer
-   */
   @VisibleForTesting
-  public static Gauge getPeerCommitIndexGauge(RaftGroupMemberId serverId, RaftPeerId peerId) {
-
-    final RaftServerMetricsImpl serverMetrics = METRICS.get(serverId);
-    if (serverMetrics == null) {
-      return null;
-    }
-
-    final String followerCommitIndexKey = getPeerCommitIndexGaugeKey(peerId);
-
-    SortedMap<String, Gauge> map =
-        serverMetrics.registry.getGauges((s, metric) ->
-            s.contains(followerCommitIndexKey));
-
-    Preconditions.assertTrue(map.size() <= 1);
-    return map.get(map.firstKey());
+  static RaftServerMetricsImpl getImpl(RaftGroupMemberId serverId) {
+    return METRICS.get(serverId);
   }
 
   /**
@@ -213,7 +193,7 @@ public final class RaftServerMetricsImpl extends RatisMetrics implements RaftSer
     registry.counter(REQUEST_QUEUE_LIMIT_HIT_COUNTER).inc();
   }
 
-  public void addNumPendingRequestsGauge(Gauge queueSize) {
+  public void addNumPendingRequestsGauge(Supplier<Integer> queueSize) {
     registry.gauge(REQUEST_QUEUE_SIZE, () -> queueSize);
   }
 
@@ -221,7 +201,7 @@ public final class RaftServerMetricsImpl extends RatisMetrics implements RaftSer
     return registry.remove(REQUEST_QUEUE_SIZE);
   }
 
-  public void addNumPendingRequestsMegaByteSize(Gauge megabyteSize) {
+  public void addNumPendingRequestsMegaByteSize(Supplier<Integer> megabyteSize) {
     registry.gauge(REQUEST_MEGA_BYTE_SIZE, () -> megabyteSize);
   }
 
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..69526cbc6 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,12 +18,13 @@
 
 package org.apache.ratis.server.metrics;
 
-import org.apache.ratis.thirdparty.com.codahale.metrics.*;
 import org.apache.ratis.protocol.RaftGroupMemberId;
 import org.apache.ratis.server.raftlog.segmented.SegmentedRaftLogCache;
+import org.apache.ratis.thirdparty.com.codahale.metrics.Timer;
 import org.apache.ratis.util.DataQueue;
 
 import java.util.Queue;
+import java.util.function.Supplier;
 
 public class SegmentedRaftLogMetrics extends RaftLogMetricsBase {
   //////////////////////////////
@@ -82,33 +83,27 @@ public class SegmentedRaftLogMetrics extends RaftLogMetricsBase {
     super(serverId);
   }
 
-  public void addDataQueueSizeGauge(DataQueue queue) {
+  public void addDataQueueSizeGauge(DataQueue<?> queue) {
     registry.gauge(RAFT_LOG_DATA_QUEUE_SIZE, () -> queue::getNumElements);
   }
 
   public void addClosedSegmentsNum(SegmentedRaftLogCache cache) {
-    registry.gauge(RAFT_LOG_CACHE_CLOSED_SEGMENTS_NUM, () -> () -> {
-      return cache.getCachedSegmentNum();
-    });
+    registry.gauge(RAFT_LOG_CACHE_CLOSED_SEGMENTS_NUM, () -> cache::getCachedSegmentNum);
   }
 
   public void addClosedSegmentsSizeInBytes(SegmentedRaftLogCache cache) {
-    registry.gauge(RAFT_LOG_CACHE_CLOSED_SEGMENTS_SIZE_IN_BYTES, () -> () -> {
-      return cache.getClosedSegmentsSizeInBytes();
-    });
+    registry.gauge(RAFT_LOG_CACHE_CLOSED_SEGMENTS_SIZE_IN_BYTES, () -> cache::getClosedSegmentsSizeInBytes);
   }
 
   public void addOpenSegmentSizeInBytes(SegmentedRaftLogCache cache) {
-    registry.gauge(RAFT_LOG_CACHE_OPEN_SEGMENT_SIZE_IN_BYTES, () -> () -> {
-      return cache.getOpenSegmentSizeInBytes();
-    });
+    registry.gauge(RAFT_LOG_CACHE_OPEN_SEGMENT_SIZE_IN_BYTES, () -> cache::getOpenSegmentSizeInBytes);
   }
 
-  public void addLogWorkerQueueSizeGauge(Queue queue) {
-    registry.gauge(RAFT_LOG_WORKER_QUEUE_SIZE, () -> () -> queue.size());
+  public void addLogWorkerQueueSizeGauge(Queue<?> queue) {
+    registry.gauge(RAFT_LOG_WORKER_QUEUE_SIZE, () -> queue::size);
   }
 
-  public void addFlushBatchSizeGauge(MetricRegistry.MetricSupplier<Gauge> supplier) {
+  public void addFlushBatchSizeGauge(Supplier<Supplier<Integer>> supplier) {
     registry.gauge(RAFT_LOG_SYNC_BATCH_SIZE, supplier);
   }
 
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..8053f44b7 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
@@ -18,7 +18,6 @@
 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 edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import org.apache.ratis.conf.RaftProperties;
 import org.apache.ratis.proto.RaftProtos.StateMachineLogEntryProto;
@@ -174,7 +173,7 @@ class SegmentedRaftLogWorker {
   private final long segmentMaxSize;
   private final long preallocatedSize;
   private final RaftServer.Division server;
-  private int flushBatchSize;
+  private volatile int flushBatchSize;
 
   private final boolean asyncFlush;
   private final boolean unsafeFlush;
@@ -212,7 +211,7 @@ class SegmentedRaftLogWorker {
     // Server Id can be null in unit tests
     metricRegistry.addDataQueueSizeGauge(queue);
     metricRegistry.addLogWorkerQueueSizeGauge(writeTasks.q);
-    metricRegistry.addFlushBatchSizeGauge(() -> (Gauge<Integer>) () -> flushBatchSize);
+    metricRegistry.addFlushBatchSizeGauge(() -> () -> flushBatchSize);
     this.logFlushTimer = metricRegistry.getFlushTimer();
     this.raftLogSyncTimer = metricRegistry.getRaftLogSyncTimer();
     this.raftLogQueueingTimer = metricRegistry.getRaftLogQueueTimer();
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..c9ef9b06b 100644
--- a/ratis-server/src/test/java/org/apache/ratis/LogAppenderTests.java
+++ b/ratis-server/src/test/java/org/apache/ratis/LogAppenderTests.java
@@ -24,7 +24,7 @@ import org.apache.log4j.Level;
 import org.apache.ratis.RaftTestUtil.SimpleMessage;
 import org.apache.ratis.client.RaftClient;
 import org.apache.ratis.conf.RaftProperties;
-import org.apache.ratis.metrics.RatisMetricRegistry;
+import org.apache.ratis.metrics.impl.RatisMetricRegistryImpl;
 import org.apache.ratis.proto.RaftProtos.LogEntryProto;
 import org.apache.ratis.proto.RaftProtos.LogEntryProto.LogEntryBodyCase;
 import org.apache.ratis.protocol.RaftPeerId;
@@ -141,8 +141,8 @@ public abstract class LogAppenderTests<CLUSTER extends MiniRaftCluster>
       throw e;
     }
 
-    final RatisMetricRegistry ratisMetricRegistry
-        = ((RaftServerMetricsImpl)leaderServer.getRaftServerMetrics()).getRegistry();
+    final RatisMetricRegistryImpl ratisMetricRegistry = (RatisMetricRegistryImpl)
+        ((RaftServerMetricsImpl)leaderServer.getRaftServerMetrics()).getRegistry();
 
     // Get all last_heartbeat_elapsed_time metric gauges. Should be equal to number of followers.
     SortedMap<String, Gauge> heartbeatElapsedTimeGauges = ratisMetricRegistry.getGauges((s, metric) ->
@@ -160,7 +160,8 @@ public abstract class LogAppenderTests<CLUSTER extends MiniRaftCluster>
       // Try to get Heartbeat metrics for follower.
       final RaftServerMetricsImpl followerMetrics = (RaftServerMetricsImpl) followerServer.getRaftServerMetrics();
       // Metric should not exist. It only exists in leader.
-      assertTrue(followerMetrics.getRegistry().getGauges((s, m) -> s.contains("lastHeartbeatElapsedTime")).isEmpty());
+      final RatisMetricRegistryImpl followerMetricRegistry = (RatisMetricRegistryImpl)followerMetrics.getRegistry();
+      assertTrue(followerMetricRegistry.getGauges((s, m) -> s.contains("lastHeartbeatElapsedTime")).isEmpty());
       for (boolean heartbeat : new boolean[] { true, false }) {
         assertTrue(followerMetrics.getFollowerAppendEntryTimer(heartbeat).getMeanRate() > 0.0d);
         assertTrue(followerMetrics.getFollowerAppendEntryTimer(heartbeat).getCount() > 0L);
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..1413d6b91 100644
--- a/ratis-server/src/test/java/org/apache/ratis/RaftBasicTests.java
+++ b/ratis-server/src/test/java/org/apache/ratis/RaftBasicTests.java
@@ -17,6 +17,7 @@
  */
 package org.apache.ratis;
 
+import org.apache.ratis.server.metrics.ServerMetricsTestUtils;
 import org.apache.ratis.thirdparty.com.codahale.metrics.Gauge;
 import org.apache.log4j.Level;
 import org.apache.ratis.RaftTestUtil.SimpleMessage;
@@ -36,7 +37,6 @@ import org.apache.ratis.server.impl.BlockRequestHandlingInjection;
 import org.apache.ratis.server.impl.MiniRaftCluster;
 import org.apache.ratis.server.impl.RaftServerTestUtil;
 import org.apache.ratis.server.impl.RetryCacheTestUtil;
-import org.apache.ratis.server.metrics.RaftServerMetricsImpl;
 import org.apache.ratis.server.raftlog.RaftLog;
 import org.apache.ratis.util.ExitUtils;
 import org.apache.ratis.util.JavaUtils;
@@ -51,7 +51,6 @@ import java.io.IOException;
 import java.util.List;
 import java.util.Optional;
 import java.util.Set;
-import java.util.SortedMap;
 import java.util.Timer;
 import java.util.TimerTask;
 import java.util.concurrent.CompletableFuture;
@@ -489,14 +488,14 @@ public abstract class RaftBasicTests<CLUSTER extends MiniRaftCluster>
     final List<RaftServer.Division> followers = cluster.getFollowers();
     final RaftGroupMemberId leader = cluster.getLeader().getMemberId();
 
-    Gauge leaderCommitGauge = RaftServerMetricsImpl.getPeerCommitIndexGauge(leader, leader.getPeerId());
+    Gauge leaderCommitGauge = ServerMetricsTestUtils.getPeerCommitIndexGauge(leader, leader.getPeerId());
 
     for (RaftServer.Division f : followers) {
       final RaftGroupMemberId follower = f.getMemberId();
-      Gauge followerCommitGauge = RaftServerMetricsImpl.getPeerCommitIndexGauge(leader, follower.getPeerId());
+      Gauge followerCommitGauge = ServerMetricsTestUtils.getPeerCommitIndexGauge(leader, follower.getPeerId());
       Assert.assertTrue((Long)leaderCommitGauge.getValue() >=
           (Long)followerCommitGauge.getValue());
-      Gauge followerMetric = RaftServerMetricsImpl.getPeerCommitIndexGauge(follower, follower.getPeerId());
+      Gauge followerMetric = ServerMetricsTestUtils.getPeerCommitIndexGauge(follower, follower.getPeerId());
       System.out.println(followerCommitGauge.getValue());
       System.out.println(followerMetric.getValue());
       Assert.assertTrue((Long)followerCommitGauge.getValue()  <= (Long)followerMetric.getValue());
@@ -511,12 +510,7 @@ public abstract class RaftBasicTests<CLUSTER extends MiniRaftCluster>
 
     Optional<RatisMetricRegistry> metricRegistry = MetricRegistries.global().get(info);
     Assert.assertTrue(metricRegistry.isPresent());
-    RatisMetricRegistry ratisStateMachineMetricRegistry = metricRegistry.get();
 
-    SortedMap<String, Gauge> gaugeMap =
-        ratisStateMachineMetricRegistry.getGauges((s, metric) ->
-            s.contains(gaugeName));
-
-    return gaugeMap.get(gaugeMap.firstKey());
+    return ServerMetricsTestUtils.getGaugeWithName(gaugeName, metricRegistry::get);
   }
 }
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..8929fb862 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
@@ -22,7 +22,7 @@ import org.apache.ratis.BaseTest;
 import org.apache.ratis.RaftTestUtil;
 import org.apache.ratis.client.RaftClient;
 import org.apache.ratis.conf.RaftProperties;
-import org.apache.ratis.metrics.RatisMetricRegistry;
+import org.apache.ratis.metrics.impl.RatisMetricRegistryImpl;
 import org.apache.ratis.proto.RaftProtos;
 import org.apache.ratis.protocol.RaftClientReply;
 import org.apache.ratis.protocol.RaftGroupId;
@@ -407,8 +407,8 @@ public abstract class LeaderElectionTests<CLUSTER extends MiniRaftCluster>
     cluster.start();
     final RaftServer.Division leaderServer = waitForLeader(cluster);
 
-    final RatisMetricRegistry ratisMetricRegistry = LeaderElectionMetrics.getMetricRegistryForLeaderElection(
-        leaderServer.getMemberId());
+    final RatisMetricRegistryImpl ratisMetricRegistry = (RatisMetricRegistryImpl)
+        LeaderElectionMetrics.getMetricRegistryForLeaderElection(leaderServer.getMemberId());
 
     // Verify each metric individually.
     long numLeaderElections = ratisMetricRegistry.counter(LEADER_ELECTION_COUNT_METRIC).getCount();
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..5c78db42f 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
@@ -21,7 +21,7 @@ import static org.apache.ratis.server.metrics.LogAppenderMetrics.FOLLOWER_MATCH_
 import static org.apache.ratis.server.metrics.LogAppenderMetrics.FOLLOWER_NEXT_INDEX;
 import static org.apache.ratis.server.metrics.LogAppenderMetrics.FOLLOWER_RPC_RESP_TIME;
 
-import org.apache.ratis.metrics.RatisMetricRegistry;
+import org.apache.ratis.metrics.impl.RatisMetricRegistryImpl;
 import org.apache.ratis.protocol.RaftGroupId;
 import org.apache.ratis.protocol.RaftGroupMemberId;
 import org.apache.ratis.protocol.RaftPeerId;
@@ -35,7 +35,7 @@ import org.apache.ratis.thirdparty.com.codahale.metrics.Gauge;
 
 public class TestLogAppenderMetrics {
 
-  private RatisMetricRegistry ratisMetricRegistry;
+  private RatisMetricRegistryImpl ratisMetricRegistry;
   private RaftPeerId raftPeerId;
   private MyFollowerInfo followerInfo;
 
@@ -46,7 +46,7 @@ public class TestLogAppenderMetrics {
     RaftGroupMemberId raftGroupMemberId = RaftGroupMemberId.valueOf(raftPeerId, raftGroupId);
     followerInfo = new MyFollowerInfo(100L);
     LogAppenderMetrics logAppenderMetrics = new LogAppenderMetrics(raftGroupMemberId);
-    ratisMetricRegistry = logAppenderMetrics.getRegistry();
+    ratisMetricRegistry = (RatisMetricRegistryImpl) logAppenderMetrics.getRegistry();
     logAppenderMetrics.addFollowerGauges(raftPeerId, followerInfo::getNextIndex, followerInfo::getMatchIndex,
         followerInfo::getLastRpcTime);
   }
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..e5222d21b 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,8 +21,8 @@ package org.apache.ratis.server.impl;
 import static org.apache.ratis.server.metrics.RaftServerMetricsImpl.*;
 import static org.junit.Assert.assertEquals;
 
+import org.apache.ratis.metrics.impl.RatisMetricRegistryImpl;
 import org.apache.ratis.thirdparty.com.codahale.metrics.Gauge;
-import org.apache.ratis.metrics.RatisMetricRegistry;
 import org.apache.ratis.protocol.ClientInvocationId;
 import org.apache.ratis.protocol.ClientId;
 import org.apache.ratis.protocol.RaftGroupId;
@@ -40,7 +40,7 @@ import java.util.Map;
  * Test for metrics of retry cache.
  */
 public class TestRetryCacheMetrics {
-    private static RatisMetricRegistry ratisMetricRegistry;
+    private static RatisMetricRegistryImpl ratisMetricRegistry;
     private static RetryCacheImpl retryCache;
 
     @BeforeClass
@@ -53,7 +53,7 @@ public class TestRetryCacheMetrics {
 
       final RaftServerMetricsImpl raftServerMetrics = RaftServerMetricsImpl.computeIfAbsentRaftServerMetrics(
           raftGroupMemberId, () -> null, retryCache::getStatistics);
-      ratisMetricRegistry = raftServerMetrics.getRegistry();
+      ratisMetricRegistry = (RatisMetricRegistryImpl) raftServerMetrics.getRegistry();
     }
     
     @After
diff --git a/ratis-server/src/test/java/org/apache/ratis/server/metrics/ServerMetricsTestUtils.java b/ratis-server/src/test/java/org/apache/ratis/server/metrics/ServerMetricsTestUtils.java
new file mode 100644
index 000000000..40ba31e16
--- /dev/null
+++ b/ratis-server/src/test/java/org/apache/ratis/server/metrics/ServerMetricsTestUtils.java
@@ -0,0 +1,55 @@
+/*
+ * 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
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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.server.metrics;
+
+import org.apache.ratis.metrics.RatisMetricRegistry;
+import org.apache.ratis.metrics.impl.RatisMetricRegistryImpl;
+import org.apache.ratis.protocol.RaftGroupMemberId;
+import org.apache.ratis.protocol.RaftPeerId;
+import org.apache.ratis.thirdparty.com.codahale.metrics.Gauge;
+import org.apache.ratis.util.Preconditions;
+
+import java.util.SortedMap;
+import java.util.function.Supplier;
+
+public interface ServerMetricsTestUtils {
+  static Gauge getGaugeWithName(String gaugeName, Supplier<RatisMetricRegistry> metrics) {
+    final SortedMap<String, Gauge> gaugeMap = ((RatisMetricRegistryImpl)metrics.get()).getGauges(
+        (s, metric) -> s.contains(gaugeName));
+    return gaugeMap.get(gaugeMap.firstKey());
+  }
+
+  /**
+   * Get the commit index gauge for the given peer of the server
+   * @return Metric Gauge holding the value of commit index of the peer
+   */
+  static Gauge getPeerCommitIndexGauge(RaftGroupMemberId serverId, RaftPeerId peerId) {
+    final RaftServerMetricsImpl serverMetrics = RaftServerMetricsImpl.getImpl(serverId);
+    if (serverMetrics == null) {
+      return null;
+    }
+
+    final String followerCommitIndexKey = RaftServerMetricsImpl.getPeerCommitIndexGaugeKey(peerId);
+
+    final SortedMap<String, Gauge> map = ((RatisMetricRegistryImpl)serverMetrics.getRegistry())
+        .getGauges((s, metric) -> s.contains(followerCommitIndexKey));
+
+    Preconditions.assertTrue(map.size() <= 1);
+    return map.get(map.firstKey());
+  }
+}
\ No newline at end of file
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..a39612c57 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,9 +23,9 @@ 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.metrics.impl.RatisMetricRegistryImpl;
 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;
 import org.apache.ratis.protocol.RaftPeerId;
@@ -40,7 +40,7 @@ import java.util.SortedMap;
 public class TestLeaderElectionMetrics extends BaseTest {
 
   private static LeaderElectionMetrics leaderElectionMetrics;
-  private static RatisMetricRegistry ratisMetricRegistry;
+  private static RatisMetricRegistryImpl ratisMetricRegistry;
 
   @BeforeClass
   public static void setUp() {
@@ -48,7 +48,7 @@ public class TestLeaderElectionMetrics extends BaseTest {
     RaftPeerId raftPeerId = RaftPeerId.valueOf("TestId");
     RaftGroupMemberId raftGroupMemberId = RaftGroupMemberId.valueOf(raftPeerId, raftGroupId);
     leaderElectionMetrics = LeaderElectionMetrics.getLeaderElectionMetrics(raftGroupMemberId, () -> 1000L);
-    ratisMetricRegistry = leaderElectionMetrics.getRegistry();
+    ratisMetricRegistry = (RatisMetricRegistryImpl) leaderElectionMetrics.getRegistry();
   }
 
   @Test
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..db2a8df46 100644
--- a/ratis-test/src/test/java/org/apache/ratis/TestRaftServerSlownessDetection.java
+++ b/ratis-test/src/test/java/org/apache/ratis/TestRaftServerSlownessDetection.java
@@ -19,12 +19,11 @@ package org.apache.ratis;
 
 import org.apache.log4j.Level;
 import org.apache.ratis.conf.RaftProperties;
-import org.apache.ratis.metrics.RatisMetricRegistry;
+import org.apache.ratis.metrics.impl.RatisMetricRegistryImpl;
 import org.apache.ratis.protocol.RaftPeerId;
 import org.apache.ratis.server.RaftServer;
 import org.apache.ratis.server.RaftServerConfigKeys;
 import org.apache.ratis.server.impl.MiniRaftCluster;
-import org.apache.ratis.server.impl.RaftServerTestUtil;
 import org.apache.ratis.server.metrics.RaftServerMetricsImpl;
 import org.apache.ratis.server.simulation.MiniRaftClusterWithSimulatedRpc;
 import org.apache.ratis.proto.RaftProtos;
@@ -91,8 +90,8 @@ public class TestRaftServerSlownessDetection extends BaseTest {
         .slownessTimeout(cluster.getProperties()).toIntExact(TimeUnit.MILLISECONDS);
     RaftServer.Division failedFollower = cluster.getFollowers().get(0);
 
-    final RatisMetricRegistry ratisMetricRegistry
-        = ((RaftServerMetricsImpl)leaderServer.getRaftServerMetrics()).getRegistry();
+    final RatisMetricRegistryImpl ratisMetricRegistry
+        = (RatisMetricRegistryImpl) ((RaftServerMetricsImpl)leaderServer.getRaftServerMetrics()).getRegistry();
     SortedMap<String, Gauge> heartbeatElapsedTimeGauges =
         ratisMetricRegistry.getGauges((s, metric) ->
             s.contains("lastHeartbeatElapsedTime"));
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..71cc78381 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
@@ -22,11 +22,9 @@ import static org.apache.ratis.server.metrics.RaftServerMetricsImpl.RAFT_CLIENT_
 import static org.apache.ratis.server.metrics.RaftServerMetricsImpl.RAFT_CLIENT_WATCH_REQUEST;
 import static org.apache.ratis.server.metrics.RaftServerMetricsImpl.RAFT_CLIENT_WRITE_REQUEST;
 import static org.apache.ratis.server.metrics.RaftServerMetricsImpl.REQUEST_QUEUE_LIMIT_HIT_COUNTER;
-import static org.apache.ratis.server.metrics.RaftServerMetricsImpl.REQUEST_MEGA_BYTE_SIZE;
 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 org.apache.log4j.Level;
 import org.apache.ratis.BaseTest;
 import org.apache.ratis.protocol.RaftGroup;
@@ -249,12 +247,6 @@ public class TestRaftServerWithGrpc extends BaseTest implements MiniRaftClusterW
       clients.add(client);
       client.async().send(new SimpleMessage("2nd Message"));
 
-
-      final SortedMap<String, Gauge> gaugeMap = getRaftServerMetrics(cluster.getLeader())
-          .getRegistry().getGauges((s, metric) -> s.contains(
-              REQUEST_MEGA_BYTE_SIZE));
-
-
       for (int i = 0; i < 10; i++) {
         client = cluster.createClient(cluster.getLeader().getId(), RetryPolicies.noRetry());
         clients.add(client);
diff --git a/ratis-test/src/test/java/org/apache/ratis/server/raftlog/segmented/TestSegmentedRaftLogCache.java b/ratis-test/src/test/java/org/apache/ratis/server/raftlog/segmented/TestSegmentedRaftLogCache.java
index 976e9d6e4..4f135628c 100644
--- a/ratis-test/src/test/java/org/apache/ratis/server/raftlog/segmented/TestSegmentedRaftLogCache.java
+++ b/ratis-test/src/test/java/org/apache/ratis/server/raftlog/segmented/TestSegmentedRaftLogCache.java
@@ -25,7 +25,7 @@ import java.util.stream.IntStream;
 
 import org.apache.ratis.RaftTestUtil.SimpleOperation;
 import org.apache.ratis.conf.RaftProperties;
-import org.apache.ratis.metrics.RatisMetricRegistry;
+import org.apache.ratis.metrics.impl.RatisMetricRegistryImpl;
 import org.apache.ratis.server.impl.RaftServerTestUtil;
 import org.apache.ratis.server.metrics.SegmentedRaftLogMetrics;
 import org.apache.ratis.server.protocol.TermIndex;
@@ -44,12 +44,12 @@ public class TestSegmentedRaftLogCache {
 
   private SegmentedRaftLogCache cache;
   private SegmentedRaftLogMetrics raftLogMetrics;
-  private RatisMetricRegistry ratisMetricRegistry;
+  private RatisMetricRegistryImpl ratisMetricRegistry;
 
   @Before
   public void setup() {
     raftLogMetrics = new SegmentedRaftLogMetrics(RaftServerTestUtil.TEST_MEMBER_ID);
-    ratisMetricRegistry = raftLogMetrics.getRegistry();
+    ratisMetricRegistry = (RatisMetricRegistryImpl) raftLogMetrics.getRegistry();
     cache = new SegmentedRaftLogCache(null, null, prop, raftLogMetrics);
   }