You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ratis.apache.org by sh...@apache.org on 2020/01/30 14:56:27 UTC
[incubator-ratis] branch master updated: Test and cleanup Ratis
Metrics work. Contribured by Aravindan Vijayan.
This is an automated email from the ASF dual-hosted git repository.
shashikant 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 38d55c4 Test and cleanup Ratis Metrics work. Contribured by Aravindan Vijayan.
38d55c4 is described below
commit 38d55c471d4cb6118a98943d6b8d8abd34a67a0a
Author: Shashikant Banerjee <sh...@apache.org>
AuthorDate: Thu Jan 30 20:25:46 2020 +0530
Test and cleanup Ratis Metrics work. Contribured by Aravindan Vijayan.
---
.../apache/ratis/server/impl/FollowerState.java | 2 +-
.../apache/ratis/server/impl/LeaderElection.java | 2 +-
.../org/apache/ratis/server/impl/LeaderState.java | 1 +
.../org/apache/ratis/server/impl/LogAppender.java | 2 +-
.../apache/ratis/server/impl/RaftServerImpl.java | 13 ++-
.../ratis/server/impl/RaftServerMetrics.java | 39 ++++---
.../ratis/server/impl/StateMachineMetrics.java | 26 +++--
.../ratis/server/impl/StateMachineUpdater.java | 1 +
.../server/metrics/LeaderElectionMetrics.java | 33 ++++--
.../ratis/server/metrics/LogAppenderMetrics.java | 27 +++--
.../ratis/server/metrics/RaftLogMetrics.java | 71 ++++++++++--
.../ratis/server/metrics/RatisMetricNames.java | 125 ---------------------
.../apache/ratis/server/metrics/RatisMetrics.java | 69 ++++--------
.../server/raftlog/segmented/SegmentedRaftLog.java | 18 +--
.../java/org/apache/ratis/LogAppenderTests.java | 8 +-
.../test/java/org/apache/ratis/RaftBasicTests.java | 25 +++--
.../ratis/server/impl/LeaderElectionTests.java | 12 +-
.../ratis/server/impl/TestLogAppenderMetrics.java | 8 +-
.../server/metrics/TestLeaderElectionMetrics.java | 8 +-
.../ratis/server/storage/RaftStorageTestUtils.java | 5 +-
.../ratis/statemachine/RaftSnapshotBaseTest.java | 18 ++-
.../ratis/TestRaftServerSlownessDetection.java | 5 +-
.../apache/ratis/grpc/TestRaftServerWithGrpc.java | 8 +-
.../ratis/server/raftlog/TestRaftLogMetrics.java | 30 +++--
.../server/raftlog/segmented/TestLogSegment.java | 3 +-
.../raftlog/segmented/TestSegmentedRaftLog.java | 6 +-
26 files changed, 261 insertions(+), 304 deletions(-)
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/impl/FollowerState.java b/ratis-server/src/main/java/org/apache/ratis/server/impl/FollowerState.java
index d82af65..13ef103 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/impl/FollowerState.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/impl/FollowerState.java
@@ -107,7 +107,7 @@ class FollowerState extends Daemon {
if (outstandingOp.get() == 0 && lastRpcTime.elapsedTimeMs() >= electionTimeout) {
LOG.info("{}: change to CANDIDATE, lastRpcTime:{}ms, electionTimeout:{}ms",
this, lastRpcTime.elapsedTimeMs(), electionTimeout);
- server.getLeaderElectionMetricsRegistry().onLeaderElectionTimeout(); // Update timeout metric counters.
+ server.getLeaderElectionMetrics().onLeaderElectionTimeout(); // Update timeout metric counters.
// election timeout, should become a candidate
server.changeToCandidate();
break;
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/impl/LeaderElection.java b/ratis-server/src/main/java/org/apache/ratis/server/impl/LeaderElection.java
index e689e48..1148db8 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/impl/LeaderElection.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/impl/LeaderElection.java
@@ -175,7 +175,7 @@ class LeaderElection implements Runnable {
}
} finally {
// Update leader election completion metric(s).
- server.getLeaderElectionMetricsRegistry().onLeaderElectionCompletion(electionStartTime.elapsedTimeMs());
+ server.getLeaderElectionMetrics().onLeaderElectionCompletion(electionStartTime.elapsedTimeMs());
lifeCycle.checkStateAndClose(() -> {});
}
}
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/impl/LeaderState.java b/ratis-server/src/main/java/org/apache/ratis/server/impl/LeaderState.java
index 9618652..a189d5d 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/impl/LeaderState.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/impl/LeaderState.java
@@ -263,6 +263,7 @@ public class LeaderState {
LOG.warn("{}: Caught exception in sendNotLeaderResponses", this, e);
}
server.getServerRpc().notifyNotLeader(server.getMemberId().getGroupId());
+ logAppenderMetrics.unregister();
}
void notifySenders() {
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/impl/LogAppender.java b/ratis-server/src/main/java/org/apache/ratis/server/impl/LogAppender.java
index 98aad61..32339f2 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/impl/LogAppender.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/impl/LogAppender.java
@@ -40,7 +40,7 @@ import java.nio.file.Path;
import java.util.*;
import static org.apache.ratis.server.impl.RaftServerConstants.DEFAULT_CALLID;
-import static org.apache.ratis.server.metrics.RatisMetricNames.LOG_APPENDER_INSTALL_SNAPSHOT_METRIC;
+import static org.apache.ratis.server.metrics.RaftLogMetrics.LOG_APPENDER_INSTALL_SNAPSHOT_METRIC;
import static org.apache.ratis.util.LifeCycle.State.CLOSED;
import static org.apache.ratis.util.LifeCycle.State.CLOSING;
import static org.apache.ratis.util.LifeCycle.State.EXCEPTION;
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 0e62970..6a3506c 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
@@ -55,7 +55,6 @@ import java.util.stream.Collectors;
import static org.apache.ratis.proto.RaftProtos.AppendEntriesReplyProto.AppendResult.INCONSISTENCY;
import static org.apache.ratis.proto.RaftProtos.AppendEntriesReplyProto.AppendResult.NOT_LEADER;
import static org.apache.ratis.proto.RaftProtos.AppendEntriesReplyProto.AppendResult.SUCCESS;
-import static org.apache.ratis.server.metrics.LeaderElectionMetrics.getLeaderElectionMetrics;
import static org.apache.ratis.util.LifeCycle.State.NEW;
import static org.apache.ratis.util.LifeCycle.State.RUNNING;
import static org.apache.ratis.util.LifeCycle.State.STARTING;
@@ -88,7 +87,7 @@ public class RaftServerImpl implements RaftServerProtocol, RaftServerAsynchronou
private final CommitInfoCache commitInfoCache = new CommitInfoCache();
private final RaftServerJmxAdapter jmxAdapter;
- private final LeaderElectionMetrics leaderElectionMetricsRegistry;
+ private final LeaderElectionMetrics leaderElectionMetrics;
private final RaftServerMetrics raftServerMetrics;
private AtomicReference<TermIndex> inProgressInstallSnapshotRequest;
@@ -115,7 +114,7 @@ public class RaftServerImpl implements RaftServerProtocol, RaftServerAsynchronou
this.inProgressInstallSnapshotRequest = new AtomicReference<>(null);
this.jmxAdapter = new RaftServerJmxAdapter();
- this.leaderElectionMetricsRegistry = getLeaderElectionMetrics(this);
+ this.leaderElectionMetrics = LeaderElectionMetrics.getLeaderElectionMetrics(this);
this.raftServerMetrics = RaftServerMetrics.getRaftServerMetrics(this);
}
@@ -273,6 +272,8 @@ public class RaftServerImpl implements RaftServerProtocol, RaftServerAsynchronou
} catch (Exception ignored) {
LOG.warn("{}: Failed to close state", getMemberId(), ignored);
}
+ leaderElectionMetrics.unregister();
+ raftServerMetrics.unregister();
if (deleteDirectory) {
final RaftStorageDirectory dir = state.getStorage().getStorageDir();
try {
@@ -422,7 +423,7 @@ public class RaftServerImpl implements RaftServerProtocol, RaftServerAsynchronou
}
// start election
role.startLeaderElection(this);
- leaderElectionMetricsRegistry.onNewLeaderElection();
+ leaderElectionMetrics.onNewLeaderElection();
}
@Override
@@ -1338,8 +1339,8 @@ public class RaftServerImpl implements RaftServerProtocol, RaftServerAsynchronou
}
}
- public LeaderElectionMetrics getLeaderElectionMetricsRegistry() {
- return leaderElectionMetricsRegistry;
+ public LeaderElectionMetrics getLeaderElectionMetrics() {
+ return leaderElectionMetrics;
}
public RaftServerMetrics getRaftServerMetrics() {
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerMetrics.java b/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerMetrics.java
index c013406..0689496 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerMetrics.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerMetrics.java
@@ -18,16 +18,7 @@
package org.apache.ratis.server.impl;
-import static org.apache.ratis.server.metrics.RatisMetricNames.FOLLOWER_APPEND_ENTRIES_LATENCY;
-import static org.apache.ratis.server.metrics.RatisMetricNames.LEADER_METRIC_PEER_COMMIT_INDEX;
-import static org.apache.ratis.server.metrics.RatisMetricNames.LEADER_METRIC_FOLLOWER_LAST_HEARTBEAT_ELAPSED_TIME_METRIC;
-import static org.apache.ratis.server.metrics.RatisMetricNames.RAFT_CLIENT_READ_REQUEST;
-import static org.apache.ratis.server.metrics.RatisMetricNames.RAFT_CLIENT_STALE_READ_REQUEST;
-import static org.apache.ratis.server.metrics.RatisMetricNames.RAFT_CLIENT_WATCH_REQUEST;
-import static org.apache.ratis.server.metrics.RatisMetricNames.RAFT_CLIENT_WRITE_REQUEST;
-import static org.apache.ratis.server.metrics.RatisMetricNames.REQUEST_QUEUE_LIMIT_HIT_COUNTER;
-import static org.apache.ratis.server.metrics.RatisMetricNames.REQUEST_QUEUE_SIZE;
-import static org.apache.ratis.server.metrics.RatisMetricNames.RETRY_REQUEST_CACHE_HIT_COUNTER;
+import static org.apache.ratis.server.metrics.RaftLogMetrics.FOLLOWER_APPEND_ENTRIES_LATENCY;
import java.util.HashMap;
import java.util.Map;
@@ -37,6 +28,7 @@ import com.codahale.metrics.Counter;
import com.codahale.metrics.Gauge;
import com.codahale.metrics.Timer;
+import org.apache.ratis.metrics.MetricRegistryInfo;
import org.apache.ratis.metrics.RatisMetricRegistry;
import org.apache.ratis.proto.RaftProtos;
import org.apache.ratis.proto.RaftProtos.RaftClientRequestProto.TypeCase;
@@ -50,9 +42,22 @@ import org.apache.ratis.util.Preconditions;
/**
* Metric Registry for Raft Group Server. One instance per leader/follower.
*/
-public final class RaftServerMetrics {
+public final class RaftServerMetrics extends RatisMetrics {
+
+ public static final String RATIS_SERVER_METRICS = "server";
+ public static final String RATIS_SERVER_METRICS_DESC = "Metrics for Raft server";
+
+ public static final String
+ FOLLOWER_LAST_HEARTBEAT_ELAPSED_TIME_METRIC = "%s_lastHeartbeatElapsedTime";
+ public static final String LEADER_METRIC_PEER_COMMIT_INDEX = "%s_peerCommitIndex";
+ public static final String RAFT_CLIENT_READ_REQUEST = "clientReadRequest";
+ public static final String RAFT_CLIENT_STALE_READ_REQUEST = "clientStaleReadRequest";
+ public static final String RAFT_CLIENT_WRITE_REQUEST = "clientWriteRequest";
+ public static final String RAFT_CLIENT_WATCH_REQUEST = "clientWatch%sRequest";
+ public static final String RETRY_REQUEST_CACHE_HIT_COUNTER = "numRetryCacheHits";
+ public static final String REQUEST_QUEUE_LIMIT_HIT_COUNTER = "numRequestQueueLimitHits";
+ public static final String REQUEST_QUEUE_SIZE = "numPendingRequestInQueue";
- private RatisMetricRegistry registry = null;
private Map<String, Long> followerLastHeartbeatElapsedTimeMap = new HashMap<>();
private CommitInfoCache commitInfoCache;
@@ -66,11 +71,17 @@ public final class RaftServerMetrics {
}
private RaftServerMetrics(RaftServerImpl server) {
- registry = RatisMetrics.getMetricRegistryForRaftServer(server.getMemberId().toString());
+ registry = getMetricRegistryForRaftServer(server.getMemberId().toString());
commitInfoCache = server.getCommitInfoCache();
addPeerCommitIndexGauge(server.getId());
}
+ private RatisMetricRegistry getMetricRegistryForRaftServer(String serverId) {
+ return create(new MetricRegistryInfo(serverId,
+ RATIS_APPLICATION_NAME_METRICS, RATIS_SERVER_METRICS,
+ RATIS_SERVER_METRICS_DESC));
+ }
+
/**
* Register a follower with this Leader Metrics registry instance.
* @param peer {@Link RaftPeer} representing the follower
@@ -78,7 +89,7 @@ public final class RaftServerMetrics {
public void addFollower(RaftPeer peer) {
String followerName = peer.getId().toString();
String followerHbMetricKey = String.format(
- LEADER_METRIC_FOLLOWER_LAST_HEARTBEAT_ELAPSED_TIME_METRIC,
+ FOLLOWER_LAST_HEARTBEAT_ELAPSED_TIME_METRIC,
followerName);
followerLastHeartbeatElapsedTimeMap.put(followerName, 0L);
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 abeea14..ad0a44c 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
@@ -18,10 +18,8 @@
package org.apache.ratis.server.impl;
-import static org.apache.ratis.server.metrics.RatisMetricNames.STATEMACHINE_TAKE_SNAPSHOT_TIMER;
-
+import org.apache.ratis.metrics.MetricRegistryInfo;
import org.apache.ratis.metrics.RatisMetricRegistry;
-import org.apache.ratis.server.metrics.RatisMetricNames;
import org.apache.ratis.server.metrics.RatisMetrics;
import org.apache.ratis.server.raftlog.RaftLogIndex;
import org.apache.ratis.statemachine.StateMachine;
@@ -33,8 +31,14 @@ import com.codahale.metrics.Timer;
/**
* Metrics Registry for the State Machine Updater. One instance per group.
*/
-public final class StateMachineMetrics {
- private RatisMetricRegistry registry = null;
+public final class StateMachineMetrics extends RatisMetrics {
+
+ public static final String RATIS_STATEMACHINE_METRICS = "state_machine";
+ public static final String RATIS_STATEMACHINE_METRICS_DESC = "Metrics for State Machine Updater";
+
+ public static final String STATEMACHINE_APPLIED_INDEX_GAUGE = "appliedIndex";
+ public static final String STATEMACHINE_APPLY_COMPLETED_GAUGE = "applyCompletedIndex";
+ public static final String STATEMACHINE_TAKE_SNAPSHOT_TIMER = "takeSnapshot";
public static StateMachineMetrics getStateMachineMetrics(
RaftServerImpl server, RaftLogIndex appliedIndex,
@@ -51,14 +55,18 @@ public final class StateMachineMetrics {
private StateMachineMetrics(String serverId, LongSupplier getApplied,
LongSupplier getApplyCompleted) {
-
- registry = RatisMetrics.getMetricRegistryForStateMachine(serverId);
- registry.gauge(RatisMetricNames.STATEMACHINE_APPLIED_INDEX_GAUGE,
+ registry = getMetricRegistryForStateMachine(serverId);
+ registry.gauge(STATEMACHINE_APPLIED_INDEX_GAUGE,
() -> () -> getApplied.getAsLong());
- registry.gauge(RatisMetricNames.STATEMACHINE_APPLY_COMPLETED_GAUGE,
+ registry.gauge(STATEMACHINE_APPLY_COMPLETED_GAUGE,
() -> () -> getApplyCompleted.getAsLong());
}
+ private RatisMetricRegistry getMetricRegistryForStateMachine(String serverId) {
+ return create(new MetricRegistryInfo(serverId,
+ RATIS_APPLICATION_NAME_METRICS,
+ RATIS_STATEMACHINE_METRICS, RATIS_STATEMACHINE_METRICS_DESC));
+ }
public Timer getTakeSnapshotTimer() {
return registry.timer(STATEMACHINE_TAKE_SNAPSHOT_TIMER);
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/impl/StateMachineUpdater.java b/ratis-server/src/main/java/org/apache/ratis/server/impl/StateMachineUpdater.java
index 1f47447..fbfc75a 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/impl/StateMachineUpdater.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/impl/StateMachineUpdater.java
@@ -123,6 +123,7 @@ class StateMachineUpdater implements Runnable {
state = State.STOP;
try {
stateMachine.close();
+ stateMachineMetrics.unregister();
} catch(Throwable t) {
LOG.warn(name + ": Failed to close " + stateMachine.getClass().getSimpleName() + " " + stateMachine, t);
}
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/metrics/LeaderElectionMetrics.java b/ratis-server/src/main/java/org/apache/ratis/server/metrics/LeaderElectionMetrics.java
index b6b1f65..c9a90e1 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/metrics/LeaderElectionMetrics.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/metrics/LeaderElectionMetrics.java
@@ -18,26 +18,35 @@
package org.apache.ratis.server.metrics;
-import static org.apache.ratis.server.metrics.RatisMetricNames.LAST_LEADER_ELAPSED_TIME;
-import static org.apache.ratis.server.metrics.RatisMetricNames.LEADER_ELECTION_COUNT_METRIC;
-import static org.apache.ratis.server.metrics.RatisMetricNames.LEADER_ELECTION_LATENCY;
-import static org.apache.ratis.server.metrics.RatisMetricNames.LEADER_ELECTION_TIMEOUT_COUNT_METRIC;
-
+import org.apache.ratis.metrics.MetricRegistryInfo;
import org.apache.ratis.metrics.RatisMetricRegistry;
import org.apache.ratis.server.impl.RaftServerImpl;
/**
* Class to update the metrics related to Leader Election.
*/
-public final class LeaderElectionMetrics {
+public final class LeaderElectionMetrics extends RatisMetrics {
+
+ public static final String RATIS_LEADER_ELECTION_METRICS = "leader_election";
+ public static final String RATIS_LEADER_ELECTION_METRICS_DESC = "Metrics for Ratis Leader Election.";
+
+ public static final String LEADER_ELECTION_COUNT_METRIC = "electionCount";
+ public static final String LEADER_ELECTION_TIMEOUT_COUNT_METRIC = "electionTimeoutCount";
+ public static final String LEADER_ELECTION_LATENCY = "electionLatency";
+ public static final String LAST_LEADER_ELAPSED_TIME = "lastLeaderElapsedTime";
private long leaderElectionCompletionLatency = 0L;
- private RatisMetricRegistry ratisMetricRegistry;
private LeaderElectionMetrics(RaftServerImpl raftServer) {
- this.ratisMetricRegistry = RatisMetrics.getMetricRegistryForLeaderElection(raftServer.getMemberId().toString());
- ratisMetricRegistry.gauge(LEADER_ELECTION_LATENCY, () -> () -> leaderElectionCompletionLatency);
- ratisMetricRegistry.gauge(LAST_LEADER_ELAPSED_TIME, () -> () -> raftServer.getState().getLastLeaderElapsedTimeMs());
+ this.registry = getMetricRegistryForLeaderElection(raftServer.getMemberId().toString());
+ registry.gauge(LEADER_ELECTION_LATENCY, () -> () -> leaderElectionCompletionLatency);
+ registry.gauge(LAST_LEADER_ELAPSED_TIME, () -> () -> raftServer.getState().getLastLeaderElapsedTimeMs());
+ }
+
+ private RatisMetricRegistry getMetricRegistryForLeaderElection(String serverId) {
+ return create(new MetricRegistryInfo(serverId,
+ RATIS_APPLICATION_NAME_METRICS, RATIS_LEADER_ELECTION_METRICS,
+ RATIS_LEADER_ELECTION_METRICS_DESC));
}
public static LeaderElectionMetrics getLeaderElectionMetrics(RaftServerImpl raftServer) {
@@ -45,7 +54,7 @@ public final class LeaderElectionMetrics {
}
public void onNewLeaderElection() {
- ratisMetricRegistry.counter(LEADER_ELECTION_COUNT_METRIC).inc();
+ registry.counter(LEADER_ELECTION_COUNT_METRIC).inc();
}
public void onLeaderElectionCompletion(long elapsedTime) {
@@ -53,6 +62,6 @@ public final class LeaderElectionMetrics {
}
public void onLeaderElectionTimeout() {
- ratisMetricRegistry.counter(LEADER_ELECTION_TIMEOUT_COUNT_METRIC).inc();
+ registry.counter(LEADER_ELECTION_TIMEOUT_COUNT_METRIC).inc();
}
}
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/metrics/LogAppenderMetrics.java b/ratis-server/src/main/java/org/apache/ratis/server/metrics/LogAppenderMetrics.java
index 6e48138..9fc44be 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/metrics/LogAppenderMetrics.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/metrics/LogAppenderMetrics.java
@@ -17,31 +17,36 @@
*/
package org.apache.ratis.server.metrics;
-import static org.apache.ratis.server.metrics.RatisMetricNames.FOLLOWER_MATCH_INDEX;
-import static org.apache.ratis.server.metrics.RatisMetricNames.FOLLOWER_NEXT_INDEX;
-import static org.apache.ratis.server.metrics.RatisMetricNames.FOLLOWER_RPC_RESP_TIME;
+import static org.apache.ratis.server.metrics.RaftLogMetrics.FOLLOWER_MATCH_INDEX;
+import static org.apache.ratis.server.metrics.RaftLogMetrics.FOLLOWER_NEXT_INDEX;
+import static org.apache.ratis.server.metrics.RaftLogMetrics.FOLLOWER_RPC_RESP_TIME;
+import org.apache.ratis.metrics.MetricRegistryInfo;
import org.apache.ratis.metrics.RatisMetricRegistry;
import org.apache.ratis.protocol.RaftGroupMemberId;
import org.apache.ratis.server.impl.FollowerInfo;
-public final class LogAppenderMetrics {
- private RatisMetricRegistry ratisMetricRegistry;
+public final class LogAppenderMetrics extends RatisMetrics {
+ public static final String RATIS_LOG_APPENDER_METRICS = "log_appender";
+ public static final String RATIS_LOG_APPENDER_METRICS_DESC = "Metrics for log appender";
public LogAppenderMetrics(RaftGroupMemberId groupMemberId) {
- ratisMetricRegistry = RatisMetrics.getMetricRegistryForLogAppender(groupMemberId.toString());
+ registry = getMetricRegistryForLogAppender(groupMemberId.toString());
}
- public RatisMetricRegistry getRatisMetricRegistry() {
- return ratisMetricRegistry;
+ private RatisMetricRegistry getMetricRegistryForLogAppender(String serverId) {
+ return create(new MetricRegistryInfo(serverId,
+ RATIS_APPLICATION_NAME_METRICS,
+ RATIS_LOG_APPENDER_METRICS, RATIS_LOG_APPENDER_METRICS_DESC));
}
public void addFollowerGauges(FollowerInfo followerInfo) {
- ratisMetricRegistry.gauge(String.format(FOLLOWER_NEXT_INDEX, followerInfo.getPeer().getId().toString()),
+ registry.gauge(String.format(FOLLOWER_NEXT_INDEX,
+ followerInfo.getPeer().getId().toString()),
() -> followerInfo::getNextIndex);
- ratisMetricRegistry.gauge(String.format(FOLLOWER_MATCH_INDEX, followerInfo.getPeer().getId().toString()),
+ registry.gauge(String.format(FOLLOWER_MATCH_INDEX, followerInfo.getPeer().getId().toString()),
() -> followerInfo::getMatchIndex);
- ratisMetricRegistry.gauge(String.format(FOLLOWER_RPC_RESP_TIME, followerInfo.getPeer().getId().toString()),
+ registry.gauge(String.format(FOLLOWER_RPC_RESP_TIME, followerInfo.getPeer().getId().toString()),
() -> () -> followerInfo.getLastRpcTime().elapsedTimeMs());
}
}
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/metrics/RaftLogMetrics.java b/ratis-server/src/main/java/org/apache/ratis/server/metrics/RaftLogMetrics.java
index a65817e..5eb2a85 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/metrics/RaftLogMetrics.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/metrics/RaftLogMetrics.java
@@ -20,6 +20,7 @@ package org.apache.ratis.server.metrics;
import java.util.Queue;
+import org.apache.ratis.metrics.MetricRegistryInfo;
import org.apache.ratis.metrics.RatisMetricRegistry;
import org.apache.ratis.util.DataQueue;
@@ -27,18 +28,64 @@ import com.codahale.metrics.Gauge;
import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.Timer;
-import static org.apache.ratis.server.metrics.RatisMetricNames.*;
-
-public class RaftLogMetrics {
-
- private RatisMetricRegistry registry = null;
-
- RaftLogMetrics(RatisMetricRegistry ratisMetricRegistry) {
- this.registry = ratisMetricRegistry;
- }
-
- public RatisMetricRegistry getRegistry() {
- return registry;
+public class RaftLogMetrics extends RatisMetrics {
+
+ public static final String RATIS_LOG_WORKER_METRICS_DESC = "Metrics for Log Worker";
+ public static final String RATIS_LOG_WORKER_METRICS = "log_worker";
+
+ //////////////////////////////
+ // Raft Log Write Path Metrics
+ /////////////////////////////
+ // Time taken to flush log.
+ public static final String RAFT_LOG_FLUSH_TIME = "flushTime";
+ // Number of times raft log is flushed
+ public static final String RAFT_LOG_FLUSH_COUNT = "flushCount";
+ // Time taken to sync raft log.
+ public static final String RAFT_LOG_SYNC_TIME = "syncTime";
+ // Raft log data queue size which at any time gives the number of raft log related operations in the queue.
+ public static final String RAFT_LOG_DATA_QUEUE_SIZE = "dataQueueSize";
+ // Raft log worker queue size which at any time gives number of committed entries that are to be synced.
+ public static final String RAFT_LOG_WORKER_QUEUE_SIZE = "workerQueueSize";
+ // No. of raft log entries synced with each flush call
+ public static final String RAFT_LOG_SYNC_BATCH_SIZE = "syncBatchSize";
+ // Count of RaftLogCache Misses
+ public static final String RAFT_LOG_CACHE_MISS_COUNT = "cacheMissCount";
+ // Count of RaftLogCache Hits
+ public static final String RAFT_LOG_CACHE_HIT_COUNT = "cacheHitCount";
+ // Total time taken to append a raft log entry
+ public static final String RAFT_LOG_APPEND_ENTRY_LATENCY = "appendEntryLatency";
+ // Time spent by a Raft log operation in the queue.
+ public static final String RAFT_LOG_TASK_QUEUE_TIME = "enqueuedTime";
+ // Time taken for a Raft log operation to get into the queue after being requested. This will be the time it has to
+ // wait for the queue to be non-full.
+ public static final String RAFT_LOG_TASK_ENQUEUE_DELAY = "queueingDelay";
+ // Time taken for a Raft log operation to complete execution.
+ public static final String RAFT_LOG_TASK_EXECUTION_TIME = "%sExecutionTime";
+ // Number of entries appended to the raft log
+ public static final String RAFT_LOG_APPEND_ENTRY_COUNT = "appendEntryCount";
+ public static final String RAFT_LOG_PURGE_METRIC = "purgeLog";
+ public static final String LOG_APPENDER_INSTALL_SNAPSHOT_METRIC = "numInstallSnapshot";
+
+ //////////////////////////////
+ // Raft Log Read Path Metrics
+ /////////////////////////////
+ // Time required to read a raft log entry from actual raft log file and create a raft log entry
+ public static final String RAFT_LOG_READ_ENTRY_LATENCY = "readEntryLatency";
+ // Time required to load and process raft log segments during restart
+ public static final String RAFT_LOG_LOAD_SEGMENT_LATENCY = "segmentLoadLatency";
+ public static final String FOLLOWER_APPEND_ENTRIES_LATENCY = "follower_append_entry_latency";
+ public static final String FOLLOWER_NEXT_INDEX = "follower_%s_next_index";
+ public static final String FOLLOWER_MATCH_INDEX = "follower_%s_match_index";
+ public static final String FOLLOWER_RPC_RESP_TIME = "follower_%s_rpc_response_time";
+
+ public RaftLogMetrics(String serverId) {
+ this.registry = getMetricRegistryForLogWorker(serverId);
+ }
+
+ private RatisMetricRegistry getMetricRegistryForLogWorker(String serverId) {
+ return create(new MetricRegistryInfo(serverId,
+ RATIS_APPLICATION_NAME_METRICS,
+ RATIS_LOG_WORKER_METRICS, RATIS_LOG_WORKER_METRICS_DESC));
}
public void addDataQueueSizeGauge(DataQueue queue) {
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/metrics/RatisMetricNames.java b/ratis-server/src/main/java/org/apache/ratis/server/metrics/RatisMetricNames.java
deleted file mode 100644
index 16ddf62..0000000
--- a/ratis-server/src/main/java/org/apache/ratis/server/metrics/RatisMetricNames.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * 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;
-
-public final class RatisMetricNames {
-
- private RatisMetricNames() {
- }
-
- public static final String LEADER_ELECTION_COUNT_METRIC = "leaderElectionCount";
- public static final String LEADER_ELECTION_TIMEOUT_COUNT_METRIC = "leaderElectionTimeoutCount";
- public static final String LEADER_ELECTION_LATENCY = "leaderElectionLatency";
- public static final String LAST_LEADER_ELAPSED_TIME = "lastLeaderElapsedTime";
-
- public static final String
- LEADER_METRIC_FOLLOWER_LAST_HEARTBEAT_ELAPSED_TIME_METRIC = "%s_lastHeartbeatElapsedTime";
- public static final String LEADER_METRIC_PEER_COMMIT_INDEX = "%s_peerCommitIndex";
-
- //////////////////////////////
- // Raft State Machine Metrics
- /////////////////////////////
-
- public static final String STATEMACHINE_APPLIED_INDEX_GAUGE = "statemachineAppliedIndex";
- public static final String STATEMACHINE_APPLY_COMPLETED_GAUGE = "statemachineApplyCompletedIndex";
- public static final String STATEMACHINE_TAKE_SNAPSHOT_TIMER = "stateMachineTakeSnapshot";
-
- //////////////////////////////
- // Raft Client Metrics
- /////////////////////////////
- public static final String RAFT_CLIENT_READ_REQUEST = "clientReadRequest";
-
- public static final String RAFT_CLIENT_STALE_READ_REQUEST = "clientStaleReadRequest";
-
- public static final String RAFT_CLIENT_WRITE_REQUEST = "clientWriteRequest";
-
- public static final String RAFT_CLIENT_WATCH_REQUEST = "clientWatch%sRequest";
-
- public static final String RETRY_REQUEST_CACHE_HIT_COUNTER = "numRetryCacheHits";
-
- public static final String REQUEST_QUEUE_LIMIT_HIT_COUNTER = "numRequestQueueLimitHits";
-
- public static final String REQUEST_QUEUE_SIZE = "numPendingRequestInQueue";
-
- //////////////////////////////
- // Raft Log Write Path Metrics
- /////////////////////////////
-
- // Time taken to flush log.
- public static final String RAFT_LOG_FLUSH_TIME = "flushTime";
-
- // Number of times raft log is flushed
- public static final String RAFT_LOG_FLUSH_COUNT = "flushCount";
-
- // Time taken to sync raft log.
- public static final String RAFT_LOG_SYNC_TIME = "syncTime";
-
- // Raft log data queue size which at any time gives the number of raft log related operations in the queue.
- public static final String RAFT_LOG_DATA_QUEUE_SIZE = "dataQueueSize";
-
- // Raft log worker queue size which at any time gives number of committed entries that are to be synced.
- public static final String RAFT_LOG_WORKER_QUEUE_SIZE = "workerQueueSize";
-
- // No. of raft log entries synced with each flush call
- public static final String RAFT_LOG_SYNC_BATCH_SIZE = "syncBatchSize";
-
- // Count of RaftLogCache Misses
- public static final String RAFT_LOG_CACHE_MISS_COUNT = "cacheMissCount";
-
- // Count of RaftLogCache Hits
- public static final String RAFT_LOG_CACHE_HIT_COUNT = "cacheHitCount";
-
- // Total time taken to append a raft log entry
- public static final String RAFT_LOG_APPEND_ENTRY_LATENCY = "appendEntryLatency";
-
- // Time spent by a Raft log operation in the queue.
- public static final String RAFT_LOG_TASK_QUEUE_TIME = "enqueuedTime";
-
- // Time taken for a Raft log operation to get into the queue after being requested. This will be the time it has to
- // wait for the queue to be non-full.
- public static final String RAFT_LOG_TASK_ENQUEUE_DELAY = "queueingDelay";
-
- // Time taken for a Raft log operation to complete execution.
- public static final String RAFT_LOG_TASK_EXECUTION_TIME = "%sExecutionTime";
-
- // Number of entries appended to the raft log
- public static final String RAFT_LOG_APPEND_ENTRY_COUNT = "appendEntryCount";
-
- public static final String RAFT_LOG_PURGE_METRIC = "purgeLog";
-
- public static final String LOG_APPENDER_INSTALL_SNAPSHOT_METRIC = "numInstallSnapshot";
-
- //////////////////////////////
- // Raft Log Read Path Metrics
- /////////////////////////////
-
- // Time required to read a raft log entry from actual raft log file and create a raft log entry
- public static final String RAFT_LOG_READ_ENTRY_LATENCY = "readEntryLatency";
-
- // Time required to load and process raft log segments during restart
- public static final String RAFT_LOG_LOAD_SEGMENT_LATENCY = "segmentLoadLatency";
-
- public static final String FOLLOWER_APPEND_ENTRIES_LATENCY = "follower_append_entry_latency";
-
- public static final String FOLLOWER_NEXT_INDEX = "follower_%s_next_index";
-
- public static final String FOLLOWER_MATCH_INDEX = "follower_%s_match_index";
-
- public static final String FOLLOWER_RPC_RESP_TIME = "follower_%s_rpc_response_time";
-}
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/metrics/RatisMetrics.java b/ratis-server/src/main/java/org/apache/ratis/server/metrics/RatisMetrics.java
index 3122b8b..0ca63ba 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/metrics/RatisMetrics.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/metrics/RatisMetrics.java
@@ -23,63 +23,34 @@ import java.util.Optional;
import org.apache.ratis.metrics.MetricRegistries;
import org.apache.ratis.metrics.MetricRegistryInfo;
import org.apache.ratis.metrics.RatisMetricRegistry;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class RatisMetrics {
- public static final String RATIS_APPLICATION_NAME_METRICS = "ratis_core";
- public static final String RATIS_LOG_WORKER_METRICS_DESC = "Metrics for Log Worker";
- public static final String RATIS_LOG_WORKER_METRICS = "log_worker";
- public static final String RATIS_LEADER_ELECTION_METRICS = "leader_election";
- public static final String RATIS_LEADER_ELECTION_METRICS_DESC = "Metrics for Ratis Leader Election.";
- public static final String RATIS_STATEMACHINE_METRICS = "state_machine";
- public static final String RATIS_STATEMACHINE_METRICS_DESC = "Metrics for State Machine Updater";
- public static final String RATIS_SERVER_METRICS = "server";
- public static final String RATIS_SERVER_METRICS_DESC = "Metrics for Raft server";
- public static final String RATIS_LOG_APPENDER_METRICS = "log_appender";
- public static final String RATIS_LOG_APPENDER_METRICS_DESC = "Metrics for log appender";
+ static final Logger LOG = LoggerFactory.getLogger(RatisMetrics.class);
+ public static final String RATIS_APPLICATION_NAME_METRICS = "ratis";
- private static RatisMetricRegistry create(MetricRegistryInfo info) {
- Optional<RatisMetricRegistry> metricRegistry = MetricRegistries.global().get(info);
- if (metricRegistry.isPresent()) {
- return metricRegistry.get();
- }
- RatisMetricRegistry registry = MetricRegistries.global().create(info);
- return registry;
- }
-
- public static RatisMetricRegistry getMetricRegistryForLeaderElection(String serverId) {
- return create(new MetricRegistryInfo(serverId, RATIS_APPLICATION_NAME_METRICS, RATIS_LEADER_ELECTION_METRICS,
- RATIS_LEADER_ELECTION_METRICS_DESC));
- }
+ @SuppressWarnings("VisibilityModifier")
+ protected RatisMetricRegistry registry;
- public static RatisMetricRegistry getMetricRegistryForRaftServer(String serverId) {
- return create(new MetricRegistryInfo(serverId,
- RATIS_APPLICATION_NAME_METRICS, RATIS_SERVER_METRICS,
- RATIS_SERVER_METRICS_DESC));
- }
-
- public static RatisMetricRegistry getMetricRegistryForStateMachine(String serverId) {
- return create(new MetricRegistryInfo(serverId, RATIS_APPLICATION_NAME_METRICS,
- RATIS_STATEMACHINE_METRICS, RATIS_STATEMACHINE_METRICS_DESC));
+ protected RatisMetricRegistry create(MetricRegistryInfo info) {
+ Optional<RatisMetricRegistry> metricRegistry = MetricRegistries.global().get(info);
+ return metricRegistry.orElseGet(() -> {
+ LOG.info("Creating Metrics Registry : {}", info.getName());
+ return MetricRegistries.global().create(info);
+ });
}
- public static RaftLogMetrics createMetricRegistryForLogWorker(String name) {
- RatisMetricRegistry ratisMetricRegistry = getMetricRegistryForLogWorker(name);
- if (ratisMetricRegistry == null) {
- ratisMetricRegistry = create(new MetricRegistryInfo(name, RATIS_APPLICATION_NAME_METRICS,
- RATIS_LOG_WORKER_METRICS, RATIS_LOG_WORKER_METRICS_DESC));
+ public void unregister() {
+ MetricRegistryInfo info = registry.getMetricRegistryInfo();
+ LOG.info("Unregistering Metrics Registry : {}", info.getName());
+ Optional<RatisMetricRegistry> metricRegistry = MetricRegistries.global().get(info);
+ if (metricRegistry.isPresent()) {
+ MetricRegistries.global().remove(info);
}
- return new RaftLogMetrics(ratisMetricRegistry);
}
- public static RatisMetricRegistry getMetricRegistryForLogWorker(String name) {
- Optional<RatisMetricRegistry> ratisMetricRegistry = MetricRegistries.global().get(
- new MetricRegistryInfo(name, RATIS_APPLICATION_NAME_METRICS, RATIS_LOG_WORKER_METRICS,
- RATIS_LOG_WORKER_METRICS_DESC));
- return ratisMetricRegistry.orElse(null);
- }
-
- public static RatisMetricRegistry getMetricRegistryForLogAppender(String serverId) {
- return create(new MetricRegistryInfo(serverId, RATIS_APPLICATION_NAME_METRICS,
- RATIS_LOG_APPENDER_METRICS, RATIS_LOG_APPENDER_METRICS_DESC));
+ public RatisMetricRegistry getRegistry() {
+ return registry;
}
}
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLog.java b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLog.java
index 569062c..eb91182 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLog.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLog.java
@@ -24,7 +24,6 @@ import org.apache.ratis.server.RaftServerConfigKeys;
import org.apache.ratis.server.impl.RaftServerImpl;
import org.apache.ratis.server.impl.ServerProtoUtils;
import org.apache.ratis.server.metrics.RaftLogMetrics;
-import org.apache.ratis.server.metrics.RatisMetrics;
import org.apache.ratis.server.protocol.TermIndex;
import org.apache.ratis.server.raftlog.RaftLog;
import org.apache.ratis.server.raftlog.RaftLogIOException;
@@ -192,7 +191,7 @@ public class SegmentedRaftLog extends RaftLog {
private final SegmentedRaftLogWorker fileLogWorker;
private final long segmentMaxSize;
private final boolean stateMachineCachingEnabled;
- private final RaftLogMetrics metricRegistry;
+ private final RaftLogMetrics raftLogMetrics;
public SegmentedRaftLog(RaftGroupMemberId memberId, RaftServerImpl server,
RaftStorage storage, long lastIndexInSnapshot, RaftProperties properties) {
@@ -209,10 +208,10 @@ public class SegmentedRaftLog extends RaftLog {
this.storage = storage;
this.stateMachine = stateMachine;
segmentMaxSize = RaftServerConfigKeys.Log.segmentSizeMax(properties).getSize();
- this.metricRegistry = RatisMetrics.createMetricRegistryForLogWorker(memberId.getPeerId().toString());
- this.cache = new SegmentedRaftLogCache(memberId, storage, properties, metricRegistry);
+ this.raftLogMetrics = new RaftLogMetrics(memberId.getPeerId().toString());
+ this.cache = new SegmentedRaftLogCache(memberId, storage, properties, raftLogMetrics);
this.fileLogWorker = new SegmentedRaftLogWorker(memberId, stateMachine,
- submitUpdateCommitEvent, server, storage, properties, metricRegistry);
+ submitUpdateCommitEvent, server, storage, properties, raftLogMetrics);
stateMachineCachingEnabled = RaftServerConfigKeys.Log.StateMachineData.cachingEnabled(properties);
}
@@ -248,7 +247,7 @@ public class SegmentedRaftLog extends RaftLog {
// so that during the initial loading we can apply part of the log
// entries to the state machine
boolean keepEntryInCache = (paths.size() - i++) <= cache.getMaxCachedSegments();
- final Timer.Context loadSegmentContext = metricRegistry.getRaftLogLoadSegmentTimer().time();
+ final Timer.Context loadSegmentContext = raftLogMetrics.getRaftLogLoadSegmentTimer().time();
cache.loadSegment(pi, keepEntryInCache, logConsumer);
loadSegmentContext.stop();
}
@@ -282,13 +281,13 @@ public class SegmentedRaftLog extends RaftLog {
}
final LogEntryProto entry = segment.getEntryFromCache(record.getTermIndex());
if (entry != null) {
- metricRegistry.onRaftLogCacheHit();
+ raftLogMetrics.onRaftLogCacheHit();
return entry;
}
}
// the entry is not in the segment's cache. Load the cache without holding the lock.
- metricRegistry.onRaftLogCacheMiss();
+ raftLogMetrics.onRaftLogCacheMiss();
checkAndEvictCache();
return segment.loadCache(record);
}
@@ -383,7 +382,7 @@ public class SegmentedRaftLog extends RaftLog {
@Override
protected CompletableFuture<Long> appendEntryImpl(LogEntryProto entry) {
- final Timer.Context context = metricRegistry.getRaftLogAppendEntryTimer().time();
+ final Timer.Context context = raftLogMetrics.getRaftLogAppendEntryTimer().time();
checkLogState();
if (LOG.isTraceEnabled()) {
LOG.trace("{}: appendEntry {}", getName(), ServerProtoUtils.toLogEntryString(entry));
@@ -508,6 +507,7 @@ public class SegmentedRaftLog extends RaftLog {
}
fileLogWorker.close();
storage.close();
+ raftLogMetrics.unregister();
}
SegmentedRaftLogCache getRaftLogCache() {
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 d73268d..fb09542 100644
--- a/ratis-server/src/test/java/org/apache/ratis/LogAppenderTests.java
+++ b/ratis-server/src/test/java/org/apache/ratis/LogAppenderTests.java
@@ -31,9 +31,9 @@ import org.apache.ratis.protocol.RaftPeerId;
import org.apache.ratis.server.RaftServerConfigKeys;
import org.apache.ratis.server.impl.LogAppender;
import org.apache.ratis.server.impl.RaftServerImpl;
+import org.apache.ratis.server.impl.RaftServerMetrics;
import org.apache.ratis.server.impl.ServerProtoUtils;
import org.apache.ratis.server.impl.ServerState;
-import org.apache.ratis.server.metrics.RatisMetrics;
import org.apache.ratis.server.raftlog.RaftLog;
import org.apache.ratis.statemachine.SimpleStateMachine4Testing;
import org.apache.ratis.statemachine.StateMachine;
@@ -142,8 +142,7 @@ public abstract class LogAppenderTests<CLUSTER extends MiniRaftCluster>
}
RatisMetricRegistry ratisMetricRegistry =
- RatisMetrics.getMetricRegistryForRaftServer(
- leaderServer.getMemberId().toString());
+ RaftServerMetrics.getRaftServerMetrics(leaderServer).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,8 +159,7 @@ public abstract class LogAppenderTests<CLUSTER extends MiniRaftCluster>
assertTrue((long)metric.getValue() > 0);
// Try to get Heartbeat metrics for follower.
RatisMetricRegistry followerMetricsRegistry =
- RatisMetrics.getMetricRegistryForRaftServer(
- followerServer.getMemberId().toString());
+ RaftServerMetrics.getRaftServerMetrics(followerServer).getRegistry();
// Metric should not exist. It only exists in leader.
assertTrue(followerMetricsRegistry.getGauges((s, m) -> s.contains("last_heartbeat_elapsed_time")).isEmpty());
}
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 04111ff..a550df7 100644
--- a/ratis-server/src/test/java/org/apache/ratis/RaftBasicTests.java
+++ b/ratis-server/src/test/java/org/apache/ratis/RaftBasicTests.java
@@ -18,18 +18,19 @@
package org.apache.ratis;
import com.codahale.metrics.Gauge;
+
import org.apache.log4j.Level;
import org.apache.ratis.RaftTestUtil.SimpleMessage;
import org.apache.ratis.client.RaftClient;
import org.apache.ratis.client.impl.RaftClientTestUtil;
+import org.apache.ratis.metrics.MetricRegistries;
+import org.apache.ratis.metrics.MetricRegistryInfo;
import org.apache.ratis.metrics.RatisMetricRegistry;
import org.apache.ratis.protocol.RaftClientReply;
import org.apache.ratis.protocol.RaftPeerId;
import org.apache.ratis.server.RaftServer;
import org.apache.ratis.server.RaftServerConfigKeys;
import org.apache.ratis.server.impl.*;
-import org.apache.ratis.server.metrics.RatisMetricNames;
-import org.apache.ratis.server.metrics.RatisMetrics;
import org.apache.ratis.server.raftlog.RaftLog;
import org.apache.ratis.proto.RaftProtos.LogEntryProto;
import org.apache.ratis.util.ExitUtils;
@@ -43,6 +44,7 @@ import org.slf4j.Logger;
import java.io.IOException;
import java.util.List;
+import java.util.Optional;
import java.util.SortedMap;
import java.util.Timer;
import java.util.TimerTask;
@@ -56,6 +58,11 @@ import java.util.stream.Collectors;
import java.util.stream.Stream;
import static org.apache.ratis.RaftTestUtil.waitForLeader;
+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_APPLIED_INDEX_GAUGE;
+import static org.apache.ratis.server.impl.StateMachineMetrics.STATEMACHINE_APPLY_COMPLETED_GAUGE;
+import static org.apache.ratis.server.metrics.RatisMetrics.RATIS_APPLICATION_NAME_METRICS;
public abstract class RaftBasicTests<CLUSTER extends MiniRaftCluster>
extends BaseTest
@@ -442,9 +449,9 @@ public abstract class RaftBasicTests<CLUSTER extends MiniRaftCluster>
Assert.assertTrue(leader.isLeader());
Gauge appliedIndexGauge = getStatemachineGaugeWithName(leader,
- RatisMetricNames.STATEMACHINE_APPLIED_INDEX_GAUGE);
+ STATEMACHINE_APPLIED_INDEX_GAUGE);
Gauge smAppliedIndexGauge = getStatemachineGaugeWithName(leader,
- RatisMetricNames.STATEMACHINE_APPLY_COMPLETED_GAUGE);
+ STATEMACHINE_APPLY_COMPLETED_GAUGE);
long appliedIndexBefore = (Long) appliedIndexGauge.getValue();
long smAppliedIndexBefore = (Long) smAppliedIndexGauge.getValue();
@@ -491,9 +498,13 @@ public abstract class RaftBasicTests<CLUSTER extends MiniRaftCluster>
private static Gauge getStatemachineGaugeWithName(RaftServerImpl server,
String gaugeName) {
- RatisMetricRegistry ratisStateMachineMetricRegistry =
- RatisMetrics.getMetricRegistryForStateMachine(
- server.getMemberId().toString());
+ MetricRegistryInfo info = new MetricRegistryInfo(server.getMemberId().toString(),
+ RATIS_APPLICATION_NAME_METRICS,
+ RATIS_STATEMACHINE_METRICS, RATIS_STATEMACHINE_METRICS_DESC);
+
+ Optional<RatisMetricRegistry> metricRegistry = MetricRegistries.global().get(info);
+ Assert.assertTrue(metricRegistry.isPresent());
+ RatisMetricRegistry ratisStateMachineMetricRegistry = metricRegistry.get();
SortedMap<String, Gauge> gaugeMap =
ratisStateMachineMetricRegistry.getGauges((s, metric) ->
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 5448306..814416d 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
@@ -27,7 +27,6 @@ import org.apache.ratis.protocol.RaftGroupId;
import org.apache.ratis.protocol.RaftGroupMemberId;
import org.apache.ratis.protocol.RaftPeerId;
import org.apache.ratis.server.metrics.LeaderElectionMetrics;
-import org.apache.ratis.server.metrics.RatisMetrics;
import org.apache.ratis.server.raftlog.segmented.SegmentedRaftLogTestUtils;
import org.apache.ratis.util.ExitUtils;
import org.apache.ratis.util.JavaUtils;
@@ -46,9 +45,9 @@ import java.util.concurrent.ThreadLocalRandom;
import java.util.concurrent.TimeUnit;
import static org.apache.ratis.RaftTestUtil.waitForLeader;
-import static org.apache.ratis.server.metrics.RatisMetricNames.LEADER_ELECTION_COUNT_METRIC;
-import static org.apache.ratis.server.metrics.RatisMetricNames.LEADER_ELECTION_LATENCY;
-import static org.apache.ratis.server.metrics.RatisMetricNames.LEADER_ELECTION_TIMEOUT_COUNT_METRIC;
+import static org.apache.ratis.server.metrics.LeaderElectionMetrics.LEADER_ELECTION_COUNT_METRIC;
+import static org.apache.ratis.server.metrics.LeaderElectionMetrics.LEADER_ELECTION_LATENCY;
+import static org.apache.ratis.server.metrics.LeaderElectionMetrics.LEADER_ELECTION_TIMEOUT_COUNT_METRIC;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@@ -161,8 +160,7 @@ public abstract class LeaderElectionTests<CLUSTER extends MiniRaftCluster>
cluster.start();
RaftServerImpl leaderServer = waitForLeader(cluster);
- RatisMetricRegistry ratisMetricRegistry = RatisMetrics.getMetricRegistryForLeaderElection(leaderServer
- .getMemberId().toString());
+ RatisMetricRegistry ratisMetricRegistry = LeaderElectionMetrics.getLeaderElectionMetrics(leaderServer).getRegistry();
// Verify each metric individually.
long numLeaderElections = ratisMetricRegistry.counter(LEADER_ELECTION_COUNT_METRIC).getCount();
@@ -211,7 +209,7 @@ public abstract class LeaderElectionTests<CLUSTER extends MiniRaftCluster>
when(server.isCandidate()).thenReturn(false);
when(server.getMemberId()).thenReturn(RaftGroupMemberId.valueOf(RaftPeerId.valueOf("any"), RaftGroupId.randomId()));
LeaderElectionMetrics leaderElectionMetrics = LeaderElectionMetrics.getLeaderElectionMetrics(server);
- when(server.getLeaderElectionMetricsRegistry()).thenReturn(leaderElectionMetrics);
+ when(server.getLeaderElectionMetrics()).thenReturn(leaderElectionMetrics);
return server;
}
}
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 42d8a2c..47a430b 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
@@ -17,9 +17,9 @@
*/
package org.apache.ratis.server.impl;
-import static org.apache.ratis.server.metrics.RatisMetricNames.FOLLOWER_MATCH_INDEX;
-import static org.apache.ratis.server.metrics.RatisMetricNames.FOLLOWER_NEXT_INDEX;
-import static org.apache.ratis.server.metrics.RatisMetricNames.FOLLOWER_RPC_RESP_TIME;
+import static org.apache.ratis.server.metrics.RaftLogMetrics.FOLLOWER_MATCH_INDEX;
+import static org.apache.ratis.server.metrics.RaftLogMetrics.FOLLOWER_NEXT_INDEX;
+import static org.apache.ratis.server.metrics.RaftLogMetrics.FOLLOWER_RPC_RESP_TIME;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -52,7 +52,7 @@ public class TestLogAppenderMetrics {
followerInfo = new TestFollowerInfo(raftGroupMemberId, raftPeer, Timestamp.currentTime(), 100L, true, 1000);
when(logAppender.getFollower()).thenReturn(followerInfo);
LogAppenderMetrics logAppenderMetrics = new LogAppenderMetrics(raftGroupMemberId);
- ratisMetricRegistry = logAppenderMetrics.getRatisMetricRegistry();
+ ratisMetricRegistry = logAppenderMetrics.getRegistry();
logAppenderMetrics.addFollowerGauges(followerInfo);
}
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 44750a1..e1e3d4b 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
@@ -18,9 +18,9 @@
package org.apache.ratis.server.metrics;
-import static org.apache.ratis.server.metrics.RatisMetricNames.LEADER_ELECTION_COUNT_METRIC;
-import static org.apache.ratis.server.metrics.RatisMetricNames.LEADER_ELECTION_LATENCY;
-import static org.apache.ratis.server.metrics.RatisMetricNames.LEADER_ELECTION_TIMEOUT_COUNT_METRIC;
+import static org.apache.ratis.server.metrics.LeaderElectionMetrics.LEADER_ELECTION_COUNT_METRIC;
+import static org.apache.ratis.server.metrics.LeaderElectionMetrics.LEADER_ELECTION_LATENCY;
+import static org.apache.ratis.server.metrics.LeaderElectionMetrics.LEADER_ELECTION_TIMEOUT_COUNT_METRIC;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
@@ -54,7 +54,7 @@ public class TestLeaderElectionMetrics {
RaftGroupMemberId raftGroupMemberId = RaftGroupMemberId.valueOf(raftPeerId, raftGroupId);
when(raftServer.getMemberId()).thenReturn(raftGroupMemberId);
leaderElectionMetrics = LeaderElectionMetrics.getLeaderElectionMetrics(raftServer);
- ratisMetricRegistry = RatisMetrics.getMetricRegistryForLeaderElection(raftServer.getMemberId().toString());
+ ratisMetricRegistry = leaderElectionMetrics.getRegistry();
}
@Test
diff --git a/ratis-server/src/test/java/org/apache/ratis/server/storage/RaftStorageTestUtils.java b/ratis-server/src/test/java/org/apache/ratis/server/storage/RaftStorageTestUtils.java
index 7ad23b7..b8c3677 100644
--- a/ratis-server/src/test/java/org/apache/ratis/server/storage/RaftStorageTestUtils.java
+++ b/ratis-server/src/test/java/org/apache/ratis/server/storage/RaftStorageTestUtils.java
@@ -17,7 +17,8 @@
*/
package org.apache.ratis.server.storage;
-import static org.apache.ratis.server.metrics.RatisMetricNames.RAFT_LOG_FLUSH_TIME;
+import static org.apache.ratis.server.metrics.RaftLogMetrics.RAFT_LOG_FLUSH_TIME;
+import static org.apache.ratis.server.metrics.RaftLogMetrics.RATIS_LOG_WORKER_METRICS;
import org.apache.ratis.protocol.RaftPeerId;
import org.apache.ratis.server.impl.ServerProtoUtils;
@@ -36,7 +37,7 @@ public interface RaftStorageTestUtils {
}
static String getRaftLogFullMetric(RaftPeerId serverId, String metricName) {
- return RatisMetrics.RATIS_APPLICATION_NAME_METRICS + "." + RatisMetrics.RATIS_LOG_WORKER_METRICS
+ return RatisMetrics.RATIS_APPLICATION_NAME_METRICS + "." + RATIS_LOG_WORKER_METRICS
+ "." + serverId + "." + metricName;
}
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 b1f7ef7..9b36ec6 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
@@ -17,8 +17,11 @@
*/
package org.apache.ratis.statemachine;
-import static org.apache.ratis.server.metrics.RatisMetricNames.LOG_APPENDER_INSTALL_SNAPSHOT_METRIC;
-import static org.apache.ratis.server.metrics.RatisMetricNames.STATEMACHINE_TAKE_SNAPSHOT_TIMER;
+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.RaftLogMetrics.LOG_APPENDER_INSTALL_SNAPSHOT_METRIC;
+import static org.apache.ratis.server.metrics.RatisMetrics.RATIS_APPLICATION_NAME_METRICS;
import org.apache.log4j.Level;
import org.apache.ratis.BaseTest;
@@ -27,13 +30,14 @@ import org.apache.ratis.RaftTestUtil;
import org.apache.ratis.RaftTestUtil.SimpleMessage;
import org.apache.ratis.client.RaftClient;
import org.apache.ratis.conf.RaftProperties;
+import org.apache.ratis.metrics.MetricRegistries;
+import org.apache.ratis.metrics.MetricRegistryInfo;
import org.apache.ratis.metrics.RatisMetricRegistry;
import org.apache.ratis.protocol.RaftClientReply;
import org.apache.ratis.protocol.RaftPeerId;
import org.apache.ratis.server.RaftServerConfigKeys;
import org.apache.ratis.server.impl.RaftServerImpl;
import org.apache.ratis.server.impl.RaftServerTestUtil;
-import org.apache.ratis.server.metrics.RatisMetrics;
import org.apache.ratis.server.raftlog.RaftLog;
import org.apache.ratis.server.storage.RaftStorageDirectory;
import org.apache.ratis.server.storage.RaftStorageDirectory.LogPathAndIndex;
@@ -52,6 +56,7 @@ import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.IOException;
import java.util.List;
+import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.LongStream;
@@ -241,7 +246,12 @@ public abstract class RaftSnapshotBaseTest extends BaseTest {
}
private static void verifyTakeSnapshotMetric(RaftServerImpl leader) {
- RatisMetricRegistry metricRegistry = RatisMetrics.getMetricRegistryForStateMachine(leader.getMemberId().toString());
+ MetricRegistryInfo info = new MetricRegistryInfo(leader.getMemberId().toString(),
+ RATIS_APPLICATION_NAME_METRICS,
+ RATIS_STATEMACHINE_METRICS, RATIS_STATEMACHINE_METRICS_DESC);
+ Optional<RatisMetricRegistry> opt = MetricRegistries.global().get(info);
+ Assert.assertTrue(opt.isPresent());
+ RatisMetricRegistry metricRegistry = opt.get();
Assert.assertNotNull(metricRegistry);
Timer timer = metricRegistry.timer(STATEMACHINE_TAKE_SNAPSHOT_TIMER);
Assert.assertTrue(timer.getCount() > 0);
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 d162191..e3152ad 100644
--- a/ratis-test/src/test/java/org/apache/ratis/TestRaftServerSlownessDetection.java
+++ b/ratis-test/src/test/java/org/apache/ratis/TestRaftServerSlownessDetection.java
@@ -23,7 +23,7 @@ import org.apache.ratis.metrics.RatisMetricRegistry;
import org.apache.ratis.protocol.RaftPeerId;
import org.apache.ratis.server.RaftServerConfigKeys;
import org.apache.ratis.server.impl.RaftServerImpl;
-import org.apache.ratis.server.metrics.RatisMetrics;
+import org.apache.ratis.server.impl.RaftServerMetrics;
import org.apache.ratis.server.simulation.MiniRaftClusterWithSimulatedRpc;
import org.apache.ratis.proto.RaftProtos;
import org.apache.ratis.statemachine.SimpleStateMachine4Testing;
@@ -90,8 +90,7 @@ public class TestRaftServerSlownessDetection extends BaseTest {
RaftServerImpl failedFollower = cluster.getFollowers().get(0);
RatisMetricRegistry ratisMetricRegistry =
- RatisMetrics.getMetricRegistryForRaftServer(
- leaderServer.getMemberId().toString());
+ RaftServerMetrics.getRaftServerMetrics(leaderServer).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 488b523..f79149d 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,10 +17,10 @@
*/
package org.apache.ratis.grpc;
-import static org.apache.ratis.server.metrics.RatisMetricNames.RAFT_CLIENT_READ_REQUEST;
-import static org.apache.ratis.server.metrics.RatisMetricNames.RAFT_CLIENT_STALE_READ_REQUEST;
-import static org.apache.ratis.server.metrics.RatisMetricNames.RAFT_CLIENT_WATCH_REQUEST;
-import static org.apache.ratis.server.metrics.RatisMetricNames.RAFT_CLIENT_WRITE_REQUEST;
+import static org.apache.ratis.server.impl.RaftServerMetrics.RAFT_CLIENT_READ_REQUEST;
+import static org.apache.ratis.server.impl.RaftServerMetrics.RAFT_CLIENT_STALE_READ_REQUEST;
+import static org.apache.ratis.server.impl.RaftServerMetrics.RAFT_CLIENT_WATCH_REQUEST;
+import static org.apache.ratis.server.impl.RaftServerMetrics.RAFT_CLIENT_WRITE_REQUEST;
import org.apache.log4j.Level;
import org.apache.ratis.BaseTest;
diff --git a/ratis-test/src/test/java/org/apache/ratis/server/raftlog/TestRaftLogMetrics.java b/ratis-test/src/test/java/org/apache/ratis/server/raftlog/TestRaftLogMetrics.java
index 510c1ab..e8dcf30 100644
--- a/ratis-test/src/test/java/org/apache/ratis/server/raftlog/TestRaftLogMetrics.java
+++ b/ratis-test/src/test/java/org/apache/ratis/server/raftlog/TestRaftLogMetrics.java
@@ -17,8 +17,22 @@
*/
package org.apache.ratis.server.raftlog;
+import static org.apache.ratis.server.metrics.RaftLogMetrics.RAFT_LOG_APPEND_ENTRY_COUNT;
+import static org.apache.ratis.server.metrics.RaftLogMetrics.RAFT_LOG_APPEND_ENTRY_LATENCY;
+import static org.apache.ratis.server.metrics.RaftLogMetrics.RAFT_LOG_CACHE_HIT_COUNT;
+import static org.apache.ratis.server.metrics.RaftLogMetrics.RAFT_LOG_CACHE_MISS_COUNT;
+import static org.apache.ratis.server.metrics.RaftLogMetrics.RAFT_LOG_DATA_QUEUE_SIZE;
+import static org.apache.ratis.server.metrics.RaftLogMetrics.RAFT_LOG_FLUSH_COUNT;
+import static org.apache.ratis.server.metrics.RaftLogMetrics.RAFT_LOG_FLUSH_TIME;
+import static org.apache.ratis.server.metrics.RaftLogMetrics.RAFT_LOG_SYNC_BATCH_SIZE;
+import static org.apache.ratis.server.metrics.RaftLogMetrics.RAFT_LOG_SYNC_TIME;
+import static org.apache.ratis.server.metrics.RaftLogMetrics.RAFT_LOG_TASK_ENQUEUE_DELAY;
+import static org.apache.ratis.server.metrics.RaftLogMetrics.RAFT_LOG_TASK_EXECUTION_TIME;
+import static org.apache.ratis.server.metrics.RaftLogMetrics.RAFT_LOG_TASK_QUEUE_TIME;
+import static org.apache.ratis.server.metrics.RaftLogMetrics.RAFT_LOG_WORKER_QUEUE_SIZE;
+import static org.apache.ratis.server.metrics.RatisMetrics.RATIS_APPLICATION_NAME_METRICS;
+
import com.codahale.metrics.Timer;
-import org.apache.log4j.Level;
import org.apache.ratis.BaseTest;
import org.apache.ratis.MiniRaftCluster;
import org.apache.ratis.RaftTestUtil;
@@ -26,7 +40,7 @@ import org.apache.ratis.client.RaftClient;
import org.apache.ratis.metrics.JVMMetrics;
import org.apache.ratis.metrics.RatisMetricRegistry;
import org.apache.ratis.server.impl.RaftServerImpl;
-import org.apache.ratis.server.metrics.RatisMetrics;
+import org.apache.ratis.server.metrics.RaftLogMetrics;
import org.apache.ratis.server.simulation.MiniRaftClusterWithSimulatedRpc;
import org.apache.ratis.server.storage.RaftStorageTestUtils;
import org.apache.ratis.statemachine.StateMachine;
@@ -43,8 +57,6 @@ import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
-import static org.apache.ratis.server.metrics.RatisMetricNames.*;
-
public class TestRaftLogMetrics extends BaseTest
implements MiniRaftClusterWithSimulatedRpc.FactoryGet {
static {
@@ -108,8 +120,8 @@ public class TestRaftLogMetrics extends BaseTest
static void assertFlushCount(RaftServerImpl server) throws Exception {
final String flushTimeMetric = RaftStorageTestUtils.getLogFlushTimeMetric(server.getId());
- Timer tm = (Timer) RatisMetrics.getMetricRegistryForLogWorker(server.getId().toString())
- .get(RAFT_LOG_FLUSH_TIME);
+ RatisMetricRegistry ratisMetricRegistry = new RaftLogMetrics((server.getId().toString())).getRegistry();
+ Timer tm = (Timer) ratisMetricRegistry.get(RAFT_LOG_FLUSH_TIME);
Assert.assertNotNull(tm);
final MetricsStateMachine stateMachine = MetricsStateMachine.get(server);
@@ -119,7 +131,7 @@ public class TestRaftLogMetrics extends BaseTest
Assert.assertTrue(tm.getMeanRate() > 0);
// Test jmx
- ObjectName oname = new ObjectName("ratis_core", "name", flushTimeMetric);
+ ObjectName oname = new ObjectName(RATIS_APPLICATION_NAME_METRICS, "name", flushTimeMetric);
Assert.assertEquals(expectedFlush,
((Long) ManagementFactory.getPlatformMBeanServer().getAttribute(oname, "Count"))
.intValue());
@@ -127,7 +139,7 @@ public class TestRaftLogMetrics extends BaseTest
static void assertRaftLogWritePathMetrics(RaftServerImpl server) throws Exception {
final String syncTimeMetric = RaftStorageTestUtils.getRaftLogFullMetric(server.getId(), RAFT_LOG_SYNC_TIME);
- RatisMetricRegistry ratisMetricRegistry = RatisMetrics.getMetricRegistryForLogWorker(server.getId().toString());
+ RatisMetricRegistry ratisMetricRegistry = new RaftLogMetrics((server.getId().toString())).getRegistry();
//Test sync count
Timer tm = (Timer) ratisMetricRegistry.get(RAFT_LOG_SYNC_TIME);
@@ -138,7 +150,7 @@ public class TestRaftLogMetrics extends BaseTest
Assert.assertTrue(tm.getMeanRate() > 0);
// Test jmx. Just testing one metric's JMX is good enough.
- ObjectName oname = new ObjectName("ratis_core", "name", syncTimeMetric);
+ ObjectName oname = new ObjectName(RATIS_APPLICATION_NAME_METRICS, "name", syncTimeMetric);
Assert.assertEquals(expectedFlush,
((Long) ManagementFactory.getPlatformMBeanServer().getAttribute(oname, "Count"))
.intValue());
diff --git a/ratis-test/src/test/java/org/apache/ratis/server/raftlog/segmented/TestLogSegment.java b/ratis-test/src/test/java/org/apache/ratis/server/raftlog/segmented/TestLogSegment.java
index 032c758..9a11d0f 100644
--- a/ratis-test/src/test/java/org/apache/ratis/server/raftlog/segmented/TestLogSegment.java
+++ b/ratis-test/src/test/java/org/apache/ratis/server/raftlog/segmented/TestLogSegment.java
@@ -24,7 +24,6 @@ import org.apache.ratis.server.RaftServerConfigKeys;
import org.apache.ratis.server.impl.RaftServerConstants.StartupOption;
import org.apache.ratis.server.impl.ServerProtoUtils;
import org.apache.ratis.server.metrics.RaftLogMetrics;
-import org.apache.ratis.server.metrics.RatisMetrics;
import org.apache.ratis.server.protocol.TermIndex;
import org.apache.ratis.server.storage.RaftStorage;
import org.apache.ratis.server.storage.RaftStorageDirectory;
@@ -212,7 +211,7 @@ public class TestLogSegment extends BaseTest {
@Test
public void testAppendEntryMetric() throws Exception {
- RaftLogMetrics raftLogMetrics = RatisMetrics.createMetricRegistryForLogWorker("test");
+ RaftLogMetrics raftLogMetrics = new RaftLogMetrics("test");
final File openSegmentFile = prepareLog(true, 0, 100, 0, true);
RaftStorage storage = new RaftStorage(storageDir, StartupOption.REGULAR);
diff --git a/ratis-test/src/test/java/org/apache/ratis/server/raftlog/segmented/TestSegmentedRaftLog.java b/ratis-test/src/test/java/org/apache/ratis/server/raftlog/segmented/TestSegmentedRaftLog.java
index 8b686fb..7dbbb69 100644
--- a/ratis-test/src/test/java/org/apache/ratis/server/raftlog/segmented/TestSegmentedRaftLog.java
+++ b/ratis-test/src/test/java/org/apache/ratis/server/raftlog/segmented/TestSegmentedRaftLog.java
@@ -32,6 +32,7 @@ import org.apache.ratis.server.impl.RetryCacheTestUtil;
import org.apache.ratis.server.impl.RetryCache;
import org.apache.ratis.server.impl.RaftServerImpl;
import org.apache.ratis.server.impl.ServerProtoUtils;
+import org.apache.ratis.server.metrics.RaftLogMetrics;
import org.apache.ratis.server.protocol.TermIndex;
import org.apache.ratis.proto.RaftProtos.LogEntryProto;
import org.apache.ratis.server.raftlog.RaftLog;
@@ -63,7 +64,6 @@ import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.function.Supplier;
-import static org.apache.ratis.server.metrics.RatisMetrics.getMetricRegistryForLogWorker;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.doCallRealMethod;
import static org.mockito.Mockito.doNothing;
@@ -199,7 +199,7 @@ public class TestSegmentedRaftLog extends BaseTest {
Assert.assertArrayEquals(entries, entriesFromLog);
Assert.assertEquals(entries[entries.length - 1], getLastEntry(raftLog));
- RatisMetricRegistry metricRegistryForLogWorker = getMetricRegistryForLogWorker(memberId.getPeerId().toString());
+ RatisMetricRegistry metricRegistryForLogWorker = new RaftLogMetrics((memberId.getPeerId().toString())).getRegistry();
Timer raftLogSegmentLoadLatencyTimer = metricRegistryForLogWorker.timer("segmentLoadLatency");
Assert.assertTrue(raftLogSegmentLoadLatencyTimer.getMeanRate() > 0);
@@ -408,8 +408,8 @@ public class TestSegmentedRaftLog extends BaseTest {
int segmentSize = 200;
long endIndexOfClosedSegment = segmentSize * (endTerm - startTerm - 1) - 1;
long expectedIndex = segmentSize * (endTerm - startTerm - 2);
+ RatisMetricRegistry metricRegistryForLogWorker = new RaftLogMetrics((memberId.getPeerId().toString())).getRegistry();
purgeAndVerify(startTerm, endTerm, segmentSize, 1, endIndexOfClosedSegment, expectedIndex);
- RatisMetricRegistry metricRegistryForLogWorker = getMetricRegistryForLogWorker(memberId.getPeerId().toString());
Assert.assertTrue(metricRegistryForLogWorker.timer("purgeLog").getCount() > 0);
}