You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ratis.apache.org by ru...@apache.org on 2020/12/22 23:37:21 UTC
[incubator-ratis] branch master updated: RATIS-1257. Refactor
RaftServerMetrics. (#370)
This is an automated email from the ASF dual-hosted git repository.
runzhiwang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-ratis.git
The following commit(s) were added to refs/heads/master by this push:
new 0a1b63d RATIS-1257. Refactor RaftServerMetrics. (#370)
0a1b63d is described below
commit 0a1b63d5b5f18e23e4ad52a361e1811730ba8207
Author: Tsz-Wo Nicholas Sze <sz...@apache.org>
AuthorDate: Wed Dec 23 07:37:13 2020 +0800
RATIS-1257. Refactor RaftServerMetrics. (#370)
---
.../ratis/server/metrics/RaftServerMetrics.java | 25 +++++++++++++++++
.../apache/ratis/server/impl/LeaderStateImpl.java | 4 +--
.../apache/ratis/server/impl/PendingRequests.java | 8 +++---
.../apache/ratis/server/impl/RaftServerImpl.java | 10 +++----
...rverMetrics.java => RaftServerMetricsImpl.java} | 14 +++++-----
.../java/org/apache/ratis/LogAppenderTests.java | 7 ++---
.../test/java/org/apache/ratis/RaftBasicTests.java | 8 +++---
.../server/impl/TestRatisServerMetricsBase.java | 7 ++---
.../ratis/server/impl/TestRetryCacheMetrics.java | 6 ++---
.../ratis/statemachine/RaftSnapshotBaseTest.java | 5 ++--
.../ratis/TestRaftServerSlownessDetection.java | 4 ++-
.../apache/ratis/grpc/TestRaftServerWithGrpc.java | 31 ++++++++++++----------
12 files changed, 81 insertions(+), 48 deletions(-)
diff --git a/ratis-server-api/src/main/java/org/apache/ratis/server/metrics/RaftServerMetrics.java b/ratis-server-api/src/main/java/org/apache/ratis/server/metrics/RaftServerMetrics.java
new file mode 100644
index 0000000..8d21e57
--- /dev/null
+++ b/ratis-server-api/src/main/java/org/apache/ratis/server/metrics/RaftServerMetrics.java
@@ -0,0 +1,25 @@
+/*
+ * 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;
+
+/** Metrics for a raft Server. */
+public interface RaftServerMetrics {
+ /** A snapshot just has been installed. */
+ void onSnapshotInstalled();
+}
\ No newline at end of file
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/impl/LeaderStateImpl.java b/ratis-server/src/main/java/org/apache/ratis/server/impl/LeaderStateImpl.java
index 5db9158..8b6d391 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/impl/LeaderStateImpl.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/impl/LeaderStateImpl.java
@@ -38,7 +38,7 @@ import org.apache.ratis.server.leader.FollowerInfo;
import org.apache.ratis.server.leader.LeaderState;
import org.apache.ratis.server.leader.LogAppender;
import org.apache.ratis.server.metrics.LogAppenderMetrics;
-import org.apache.ratis.server.metrics.RaftServerMetrics;
+import org.apache.ratis.server.metrics.RaftServerMetricsImpl;
import org.apache.ratis.server.protocol.TermIndex;
import org.apache.ratis.server.raftlog.LogEntryHeader;
import org.apache.ratis.server.raftlog.LogProtoUtils;
@@ -246,7 +246,7 @@ class LeaderStateImpl implements LeaderState {
private final int stagingCatchupGap;
private final long placeHolderIndex;
- private final RaftServerMetrics raftServerMetrics;
+ private final RaftServerMetricsImpl raftServerMetrics;
private final LogAppenderMetrics logAppenderMetrics;
LeaderStateImpl(RaftServerImpl server) {
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/impl/PendingRequests.java b/ratis-server/src/main/java/org/apache/ratis/server/impl/PendingRequests.java
index 9437a2f..cda61df 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/impl/PendingRequests.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/impl/PendingRequests.java
@@ -27,7 +27,7 @@ import org.apache.ratis.protocol.exceptions.RaftException;
import org.apache.ratis.protocol.RaftGroupMemberId;
import org.apache.ratis.protocol.SetConfigurationRequest;
import org.apache.ratis.server.RaftServerConfigKeys;
-import org.apache.ratis.server.metrics.RaftServerMetrics;
+import org.apache.ratis.server.metrics.RaftServerMetricsImpl;
import org.apache.ratis.statemachine.TransactionContext;
import org.apache.ratis.util.JavaUtils;
import org.apache.ratis.util.Preconditions;
@@ -76,14 +76,14 @@ class PendingRequests {
private static class RequestMap {
private final Object name;
private final ConcurrentMap<Long, PendingRequest> map = new ConcurrentHashMap<>();
- private final RaftServerMetrics raftServerMetrics;
+ private final RaftServerMetricsImpl raftServerMetrics;
/** Permits to put new requests, always synchronized. */
private final Map<Permit, Permit> permits = new HashMap<>();
/** Track and limit the number of requests and the total message size. */
private final RequestLimits resource;
- RequestMap(Object name, int elementLimit, SizeInBytes byteLimit, RaftServerMetrics raftServerMetrics) {
+ RequestMap(Object name, int elementLimit, SizeInBytes byteLimit, RaftServerMetricsImpl raftServerMetrics) {
this.name = name;
this.resource = new RequestLimits(elementLimit, byteLimit);
this.raftServerMetrics = raftServerMetrics;
@@ -179,7 +179,7 @@ class PendingRequests {
private final String name;
private final RequestMap pendingRequests;
- PendingRequests(RaftGroupMemberId id, RaftProperties properties, RaftServerMetrics raftServerMetrics) {
+ PendingRequests(RaftGroupMemberId id, RaftProperties properties, RaftServerMetricsImpl raftServerMetrics) {
this.name = id + "-" + JavaUtils.getClassSimpleName(getClass());
this.pendingRequests = new RequestMap(id,
RaftServerConfigKeys.Write.elementLimit(properties),
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 0bc5601..e13e432 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
@@ -44,7 +44,7 @@ import org.apache.ratis.server.impl.RetryCacheImpl.CacheEntry;
import org.apache.ratis.server.leader.LeaderState;
import org.apache.ratis.server.leader.LogAppender;
import org.apache.ratis.server.metrics.LeaderElectionMetrics;
-import org.apache.ratis.server.metrics.RaftServerMetrics;
+import org.apache.ratis.server.metrics.RaftServerMetricsImpl;
import org.apache.ratis.server.protocol.RaftServerAsynchronousProtocol;
import org.apache.ratis.server.protocol.RaftServerProtocol;
import org.apache.ratis.server.protocol.TermIndex;
@@ -158,7 +158,7 @@ class RaftServerImpl implements RaftServer.Division,
private final RaftServerJmxAdapter jmxAdapter;
private final LeaderElectionMetrics leaderElectionMetrics;
- private final RaftServerMetrics raftServerMetrics;
+ private final RaftServerMetricsImpl raftServerMetrics;
private final AtomicReference<TermIndex> inProgressInstallSnapshotRequest;
@@ -192,7 +192,7 @@ class RaftServerImpl implements RaftServer.Division,
this.jmxAdapter = new RaftServerJmxAdapter();
this.leaderElectionMetrics = LeaderElectionMetrics.getLeaderElectionMetrics(
getMemberId(), state::getLastLeaderElapsedTimeMs);
- this.raftServerMetrics = RaftServerMetrics.computeIfAbsentRaftServerMetrics(
+ this.raftServerMetrics = RaftServerMetricsImpl.computeIfAbsentRaftServerMetrics(
getMemberId(), () -> commitInfoCache::get, retryCache::getStatistics);
this.startComplete = new AtomicBoolean(false);
@@ -424,7 +424,7 @@ class RaftServerImpl implements RaftServer.Division,
try {
leaderElectionMetrics.unregister();
raftServerMetrics.unregister();
- RaftServerMetrics.removeRaftServerMetrics(getMemberId());
+ RaftServerMetricsImpl.removeRaftServerMetrics(getMemberId());
} catch (Exception ignored) {
LOG.warn("{}: Failed to unregister metric", getMemberId(), ignored);
}
@@ -1603,7 +1603,7 @@ class RaftServerImpl implements RaftServer.Division,
}
@Override
- public RaftServerMetrics getRaftServerMetrics() {
+ public RaftServerMetricsImpl getRaftServerMetrics() {
return raftServerMetrics;
}
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/metrics/RaftServerMetrics.java b/ratis-server/src/main/java/org/apache/ratis/server/metrics/RaftServerMetricsImpl.java
similarity index 95%
rename from ratis-server/src/main/java/org/apache/ratis/server/metrics/RaftServerMetrics.java
rename to ratis-server/src/main/java/org/apache/ratis/server/metrics/RaftServerMetricsImpl.java
index 8470467..28f2950 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/metrics/RaftServerMetrics.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/metrics/RaftServerMetricsImpl.java
@@ -45,7 +45,7 @@ import org.apache.ratis.util.Preconditions;
/**
* Metric Registry for Raft Group Server. One instance per leader/follower.
*/
-public final class RaftServerMetrics extends RatisMetrics {
+public final class RaftServerMetricsImpl extends RatisMetrics implements RaftServerMetrics {
public static final String RATIS_SERVER_METRICS = "server";
public static final String RATIS_SERVER_METRICS_DESC = "Metrics for Raft server";
@@ -84,7 +84,7 @@ public final class RaftServerMetrics extends RatisMetrics {
private final Supplier<Function<RaftPeerId, CommitInfoProto>> commitInfoCache;
/** id -> metric */
- private static final Map<RaftGroupMemberId, RaftServerMetrics> METRICS = new ConcurrentHashMap<>();
+ private static final Map<RaftGroupMemberId, RaftServerMetricsImpl> METRICS = new ConcurrentHashMap<>();
/** id -> key */
private static final Map<RaftPeerId, String> PEER_COMMIT_INDEX_GAUGE_KEYS = new ConcurrentHashMap<>();
@@ -93,18 +93,18 @@ public final class RaftServerMetrics extends RatisMetrics {
key -> String.format(LEADER_METRIC_PEER_COMMIT_INDEX, key));
}
- public static RaftServerMetrics computeIfAbsentRaftServerMetrics(RaftGroupMemberId serverId,
+ public static RaftServerMetricsImpl computeIfAbsentRaftServerMetrics(RaftGroupMemberId serverId,
Supplier<Function<RaftPeerId, CommitInfoProto>> commitInfoCache,
Supplier<RetryCache.Statistics> retryCacheStatistics) {
return METRICS.computeIfAbsent(serverId,
- key -> new RaftServerMetrics(serverId, commitInfoCache, retryCacheStatistics));
+ key -> new RaftServerMetricsImpl(serverId, commitInfoCache, retryCacheStatistics));
}
public static void removeRaftServerMetrics(RaftGroupMemberId serverId) {
METRICS.remove(serverId);
}
- public RaftServerMetrics(RaftGroupMemberId serverId,
+ public RaftServerMetricsImpl(RaftGroupMemberId serverId,
Supplier<Function<RaftPeerId, CommitInfoProto>> commitInfoCache,
Supplier<RetryCache.Statistics> retryCacheStatistics) {
this.registry = getMetricRegistryForRaftServer(serverId.toString());
@@ -159,7 +159,7 @@ public final class RaftServerMetrics extends RatisMetrics {
@VisibleForTesting
public static Gauge getPeerCommitIndexGauge(RaftGroupMemberId serverId, RaftPeerId peerId) {
- final RaftServerMetrics serverMetrics = METRICS.get(serverId);
+ final RaftServerMetricsImpl serverMetrics = METRICS.get(serverId);
if (serverMetrics == null) {
return null;
}
@@ -271,7 +271,7 @@ public final class RaftServerMetrics extends RatisMetrics {
}
}
- /** A snapshot just has been installed. */
+ @Override
public void onSnapshotInstalled() {
registry.counter(RATIS_SERVER_INSTALL_SNAPSHOT_COUNT).inc();
}
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 cae668c..0a0fdbe 100644
--- a/ratis-server/src/test/java/org/apache/ratis/LogAppenderTests.java
+++ b/ratis-server/src/test/java/org/apache/ratis/LogAppenderTests.java
@@ -32,7 +32,7 @@ import org.apache.ratis.server.RaftServer;
import org.apache.ratis.server.RaftServerConfigKeys;
import org.apache.ratis.server.leader.LogAppender;
import org.apache.ratis.server.impl.MiniRaftCluster;
-import org.apache.ratis.server.metrics.RaftServerMetrics;
+import org.apache.ratis.server.metrics.RaftServerMetricsImpl;
import org.apache.ratis.server.raftlog.LogProtoUtils;
import org.apache.ratis.server.raftlog.RaftLog;
import org.apache.ratis.statemachine.SimpleStateMachine4Testing;
@@ -141,7 +141,8 @@ public abstract class LogAppenderTests<CLUSTER extends MiniRaftCluster>
throw e;
}
- final RatisMetricRegistry ratisMetricRegistry = leaderServer.getRaftServerMetrics().getRegistry();
+ final RatisMetricRegistry ratisMetricRegistry
+ = ((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) ->
@@ -157,7 +158,7 @@ public abstract class LogAppenderTests<CLUSTER extends MiniRaftCluster>
// Metric in nanos > 0.
assertTrue((long)metric.getValue() > 0);
// Try to get Heartbeat metrics for follower.
- final RaftServerMetrics followerMetrics = followerServer.getRaftServerMetrics();
+ 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());
for (boolean heartbeat : new boolean[] { true, false }) {
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 2fe6291..7fdd4b9 100644
--- a/ratis-server/src/test/java/org/apache/ratis/RaftBasicTests.java
+++ b/ratis-server/src/test/java/org/apache/ratis/RaftBasicTests.java
@@ -34,9 +34,9 @@ import org.apache.ratis.server.RaftServer;
import org.apache.ratis.server.RaftServerConfigKeys;
import org.apache.ratis.server.impl.BlockRequestHandlingInjection;
import org.apache.ratis.server.impl.MiniRaftCluster;
-import org.apache.ratis.server.metrics.RaftServerMetrics;
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;
@@ -489,14 +489,14 @@ public abstract class RaftBasicTests<CLUSTER extends MiniRaftCluster>
final List<RaftServer.Division> followers = cluster.getFollowers();
final RaftGroupMemberId leader = cluster.getLeader().getMemberId();
- Gauge leaderCommitGauge = RaftServerMetrics.getPeerCommitIndexGauge(leader, leader.getPeerId());
+ Gauge leaderCommitGauge = RaftServerMetricsImpl.getPeerCommitIndexGauge(leader, leader.getPeerId());
for (RaftServer.Division f : followers) {
final RaftGroupMemberId follower = f.getMemberId();
- Gauge followerCommitGauge = RaftServerMetrics.getPeerCommitIndexGauge(leader, follower.getPeerId());
+ Gauge followerCommitGauge = RaftServerMetricsImpl.getPeerCommitIndexGauge(leader, follower.getPeerId());
Assert.assertTrue((Long)leaderCommitGauge.getValue() >=
(Long)followerCommitGauge.getValue());
- Gauge followerMetric = RaftServerMetrics.getPeerCommitIndexGauge(follower, follower.getPeerId());
+ Gauge followerMetric = RaftServerMetricsImpl.getPeerCommitIndexGauge(follower, follower.getPeerId());
System.out.println(followerCommitGauge.getValue());
System.out.println(followerMetric.getValue());
Assert.assertTrue((Long)followerCommitGauge.getValue() <= (Long)followerMetric.getValue());
diff --git a/ratis-server/src/test/java/org/apache/ratis/server/impl/TestRatisServerMetricsBase.java b/ratis-server/src/test/java/org/apache/ratis/server/impl/TestRatisServerMetricsBase.java
index 9cdad69..21ea752 100644
--- a/ratis-server/src/test/java/org/apache/ratis/server/impl/TestRatisServerMetricsBase.java
+++ b/ratis-server/src/test/java/org/apache/ratis/server/impl/TestRatisServerMetricsBase.java
@@ -17,7 +17,7 @@
*/
package org.apache.ratis.server.impl;
-import static org.apache.ratis.server.metrics.RaftServerMetrics.RATIS_SERVER_FAILED_CLIENT_STALE_READ_COUNT;
+import static org.apache.ratis.server.metrics.RaftServerMetricsImpl.RATIS_SERVER_FAILED_CLIENT_STALE_READ_COUNT;
import static org.junit.Assert.assertEquals;
import java.io.IOException;
@@ -32,6 +32,7 @@ import org.apache.ratis.protocol.Message;
import org.apache.ratis.protocol.RaftClientReply;
import org.apache.ratis.protocol.RaftClientRequest;
import org.apache.ratis.server.RaftServer;
+import org.apache.ratis.server.metrics.RaftServerMetricsImpl;
import org.apache.ratis.util.Log4jUtils;
import org.junit.Assert;
import org.junit.Test;
@@ -61,7 +62,7 @@ public abstract class TestRatisServerMetricsBase<CLUSTER extends MiniRaftCluster
0, Message.EMPTY, RaftClientRequest.staleReadRequestType(Long.MAX_VALUE), null);
final CompletableFuture<RaftClientReply> f = leaderImpl.getRaftServer().submitClientRequestAsync(r);
Assert.assertTrue(!f.get().isSuccess());
- assertEquals(1L, leaderImpl.getRaftServerMetrics().getRegistry()
- .counter(RATIS_SERVER_FAILED_CLIENT_STALE_READ_COUNT).getCount());
+ assertEquals(1L, ((RaftServerMetricsImpl)leaderImpl.getRaftServerMetrics())
+ .getCounter(RATIS_SERVER_FAILED_CLIENT_STALE_READ_COUNT).getCount());
}
}
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 a6d06f6..3703238 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
@@ -18,7 +18,7 @@
package org.apache.ratis.server.impl;
-import static org.apache.ratis.server.metrics.RaftServerMetrics.*;
+import static org.apache.ratis.server.metrics.RaftServerMetricsImpl.*;
import static org.junit.Assert.assertEquals;
import com.codahale.metrics.Gauge;
@@ -29,7 +29,7 @@ import org.apache.ratis.protocol.RaftGroupId;
import org.apache.ratis.protocol.RaftGroupMemberId;
import org.apache.ratis.protocol.RaftPeerId;
import org.apache.ratis.server.RaftServerConfigKeys;
-import org.apache.ratis.server.metrics.RaftServerMetrics;
+import org.apache.ratis.server.metrics.RaftServerMetricsImpl;
import org.junit.After;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -51,7 +51,7 @@ public class TestRetryCacheMetrics {
.valueOf(raftPeerId, raftGroupId);
retryCache = new RetryCacheImpl(RaftServerConfigKeys.RetryCache.EXPIRY_TIME_DEFAULT, null);
- final RaftServerMetrics raftServerMetrics = RaftServerMetrics.computeIfAbsentRaftServerMetrics(
+ final RaftServerMetricsImpl raftServerMetrics = RaftServerMetricsImpl.computeIfAbsentRaftServerMetrics(
raftGroupMemberId, () -> null, retryCache::getStatistics);
ratisMetricRegistry = raftServerMetrics.getRegistry();
}
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 4d5cf67..714ff68 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
@@ -20,7 +20,7 @@ package org.apache.ratis.statemachine;
import static org.apache.ratis.server.impl.StateMachineMetrics.RATIS_STATEMACHINE_METRICS;
import static org.apache.ratis.server.impl.StateMachineMetrics.RATIS_STATEMACHINE_METRICS_DESC;
import static org.apache.ratis.server.impl.StateMachineMetrics.STATEMACHINE_TAKE_SNAPSHOT_TIMER;
-import static org.apache.ratis.server.metrics.RaftServerMetrics.RATIS_SERVER_INSTALL_SNAPSHOT_COUNT;
+import static org.apache.ratis.server.metrics.RaftServerMetricsImpl.RATIS_SERVER_INSTALL_SNAPSHOT_COUNT;
import static org.apache.ratis.metrics.RatisMetrics.RATIS_APPLICATION_NAME_METRICS;
import org.apache.log4j.Level;
@@ -38,6 +38,7 @@ import org.apache.ratis.protocol.RaftPeerId;
import org.apache.ratis.server.RaftServer;
import org.apache.ratis.server.RaftServerConfigKeys;
import org.apache.ratis.server.impl.RaftServerTestUtil;
+import org.apache.ratis.server.metrics.RaftServerMetricsImpl;
import org.apache.ratis.server.raftlog.RaftLog;
import org.apache.ratis.server.raftlog.segmented.LogSegmentPath;
import org.apache.ratis.proto.RaftProtos.LogEntryProto;
@@ -258,7 +259,7 @@ public abstract class RaftSnapshotBaseTest extends BaseTest {
}
protected void verifyInstallSnapshotMetric(RaftServer.Division leader) {
- final Counter installSnapshotCounter = leader.getRaftServerMetrics()
+ final Counter installSnapshotCounter = ((RaftServerMetricsImpl)leader.getRaftServerMetrics())
.getCounter(RATIS_SERVER_INSTALL_SNAPSHOT_COUNT);
Assert.assertNotNull(installSnapshotCounter);
Assert.assertTrue(installSnapshotCounter.getCount() >= 1);
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 745470f..fded493 100644
--- a/ratis-test/src/test/java/org/apache/ratis/TestRaftServerSlownessDetection.java
+++ b/ratis-test/src/test/java/org/apache/ratis/TestRaftServerSlownessDetection.java
@@ -25,6 +25,7 @@ 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;
import org.apache.ratis.statemachine.SimpleStateMachine4Testing;
@@ -90,7 +91,8 @@ public class TestRaftServerSlownessDetection extends BaseTest {
.slownessTimeout(cluster.getProperties()).toIntExact(TimeUnit.MILLISECONDS);
RaftServer.Division failedFollower = cluster.getFollowers().get(0);
- final RatisMetricRegistry ratisMetricRegistry = leaderServer.getRaftServerMetrics().getRegistry();
+ final RatisMetricRegistry ratisMetricRegistry
+ = ((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 bf57765..836d096 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
@@ -17,14 +17,14 @@
*/
package org.apache.ratis.grpc;
-import static org.apache.ratis.server.metrics.RaftServerMetrics.RAFT_CLIENT_READ_REQUEST;
-import static org.apache.ratis.server.metrics.RaftServerMetrics.RAFT_CLIENT_STALE_READ_REQUEST;
-import static org.apache.ratis.server.metrics.RaftServerMetrics.RAFT_CLIENT_WATCH_REQUEST;
-import static org.apache.ratis.server.metrics.RaftServerMetrics.RAFT_CLIENT_WRITE_REQUEST;
-import static org.apache.ratis.server.metrics.RaftServerMetrics.REQUEST_QUEUE_LIMIT_HIT_COUNTER;
-import static org.apache.ratis.server.metrics.RaftServerMetrics.REQUEST_BYTE_SIZE;
-import static org.apache.ratis.server.metrics.RaftServerMetrics.REQUEST_BYTE_SIZE_LIMIT_HIT_COUNTER;
-import static org.apache.ratis.server.metrics.RaftServerMetrics.RESOURCE_LIMIT_HIT_COUNTER;
+import static org.apache.ratis.server.metrics.RaftServerMetricsImpl.RAFT_CLIENT_READ_REQUEST;
+import static org.apache.ratis.server.metrics.RaftServerMetricsImpl.RAFT_CLIENT_STALE_READ_REQUEST;
+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_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 com.codahale.metrics.Gauge;
import org.apache.commons.lang3.RandomStringUtils;
@@ -51,8 +51,8 @@ import org.apache.ratis.retry.RetryPolicies;
import org.apache.ratis.server.RaftServer;
import org.apache.ratis.server.RaftServerConfigKeys;
import org.apache.ratis.server.RaftServerRpc;
-import org.apache.ratis.server.metrics.RaftServerMetrics;
import org.apache.ratis.server.impl.RaftServerTestUtil;
+import org.apache.ratis.server.metrics.RaftServerMetricsImpl;
import org.apache.ratis.statemachine.SimpleStateMachine4Testing;
import org.apache.ratis.statemachine.StateMachine;
import org.apache.ratis.util.Log4jUtils;
@@ -228,7 +228,7 @@ public class TestRaftServerWithGrpc extends BaseTest implements MiniRaftClusterW
client.async().send(new SimpleMessage(message));
- final SortedMap<String, Gauge> gaugeMap = cluster.getLeader().getRaftServerMetrics()
+ final SortedMap<String, Gauge> gaugeMap = getRaftServerMetrics(cluster.getLeader())
.getRegistry().getGauges((s, metric) -> s.contains(REQUEST_BYTE_SIZE));
RaftTestUtil.waitFor(() -> (int) gaugeMap.get(gaugeMap.firstKey()).getValue() == message.length(),
@@ -241,7 +241,7 @@ public class TestRaftServerWithGrpc extends BaseTest implements MiniRaftClusterW
}
// Because we have passed 11 requests, and the element queue size is 10.
- RaftTestUtil.waitFor(() -> cluster.getLeader().getRaftServerMetrics()
+ RaftTestUtil.waitFor(() -> getRaftServerMetrics(cluster.getLeader())
.getCounter(REQUEST_QUEUE_LIMIT_HIT_COUNTER).getCount() == 1, 300, 5000);
stateMachine.unblockFlushStateMachineData();
@@ -253,10 +253,10 @@ public class TestRaftServerWithGrpc extends BaseTest implements MiniRaftClusterW
client.async().send(new SimpleMessage(RandomStringUtils.random(120, true, false)));
clients.add(client);
- RaftTestUtil.waitFor(() -> cluster.getLeader().getRaftServerMetrics()
+ RaftTestUtil.waitFor(() -> getRaftServerMetrics(cluster.getLeader())
.getCounter(REQUEST_BYTE_SIZE_LIMIT_HIT_COUNTER).getCount() == 1, 300, 5000);
- Assert.assertEquals(2, cluster.getLeader().getRaftServerMetrics()
+ Assert.assertEquals(2, getRaftServerMetrics(cluster.getLeader())
.getCounter(RESOURCE_LIMIT_HIT_COUNTER).getCount());
} finally {
for (RaftClient client : clients) {
@@ -265,11 +265,14 @@ public class TestRaftServerWithGrpc extends BaseTest implements MiniRaftClusterW
}
}
+ static RaftServerMetricsImpl getRaftServerMetrics(RaftServer.Division division) {
+ return (RaftServerMetricsImpl) division.getRaftServerMetrics();
+ }
void testRaftClientRequestMetrics(MiniRaftClusterWithGrpc cluster) throws IOException,
ExecutionException, InterruptedException {
final RaftServer.Division leader = RaftTestUtil.waitForLeader(cluster);
- RaftServerMetrics raftServerMetrics = leader.getRaftServerMetrics();
+ final RaftServerMetricsImpl raftServerMetrics = getRaftServerMetrics(leader);
try (final RaftClient client = cluster.createClient()) {
final CompletableFuture<RaftClientReply> f1 = client.async().send(new SimpleMessage("testing"));