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);
}