From 02d21e1316a674fa225cc8fd1a63ea2fba9f77aa Mon Sep 17 00:00:00 2001 From: lgh Date: Tue, 26 Dec 2023 14:25:35 +0800 Subject: [PATCH] add metrics --- .../java/org/apache/hadoop/ipc/Server.java | 1 + .../apache/hadoop/ipc/metrics/RpcMetrics.java | 18 ++++++++++++++++++ .../server/namenode/ha/TestObserverNode.java | 5 ++++- 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Server.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Server.java index 65d024c2ce5ca..26d3ef294a727 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Server.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Server.java @@ -3194,6 +3194,7 @@ public void run() { */ if (rpcStableEnable && startTimeNanos - call.timestampNanos > rpcStableInterval) { call.setStable(true); + rpcMetrics.incrStableCalls(); } else { // Re-queue the call and continue requeueCall(call); diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/metrics/RpcMetrics.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/metrics/RpcMetrics.java index b9be973204d21..fb8e0c5425624 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/metrics/RpcMetrics.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/metrics/RpcMetrics.java @@ -147,6 +147,8 @@ public static RpcMetrics create(Server server, Configuration conf) { MutableCounterLong rpcRequeueCalls; @Metric("Number of successful RPC calls") MutableCounterLong rpcCallSuccesses; + @Metric("Number of stable calls") + MutableCounterLong rpcStableCalls; @Metric("Number of open connections") public int numOpenConnections() { return server.getNumOpenConnections(); @@ -363,6 +365,13 @@ public void incrRpcCallSuccesses() { rpcCallSuccesses.incr(); } + /** + * Increments the stable calls counter. + */ + public void incrStableCalls() { + rpcStableCalls.incr(); + } + /** * Returns a MutableRate Counter. * @return Mutable Rate @@ -412,6 +421,15 @@ public long getRpcRequeueCalls() { return rpcRequeueCalls.value(); } + /** + * Returns the number of stable calls. + * @return long + */ + @VisibleForTesting + public long getRpcStableCalls() { + return rpcStableCalls.value(); + } + public MutableRate getDeferredRpcProcessingTime() { return deferredRpcProcessingTime; } diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestObserverNode.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestObserverNode.java index 36e92f385dd82..0e5eda020cdf4 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestObserverNode.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestObserverNode.java @@ -63,7 +63,6 @@ import org.apache.hadoop.hdfs.protocol.Block; import org.apache.hadoop.hdfs.protocol.DatanodeInfo; import org.apache.hadoop.hdfs.protocol.ExtendedBlock; -import org.apache.hadoop.hdfs.protocol.HdfsFileStatus; import org.apache.hadoop.hdfs.protocol.LocatedBlock; import org.apache.hadoop.hdfs.protocol.LocatedBlocks; import org.apache.hadoop.hdfs.qjournal.MiniQJMHACluster; @@ -181,6 +180,8 @@ public void testObserverRequeue() throws Exception { @Test public void testObserverStableRpc() throws Exception { FSNamesystem observerFsNS = dfsCluster.getNamesystem(2); + RpcMetrics obRpcMetrics = ((NameNodeRpcServer)dfsCluster + .getNameNodeRpc(2)).getClientRpcServer().getRpcMetrics(); try { // Stop EditlogTailer of Observer NameNode. observerFsNS.getEditLogTailer().stop(); @@ -194,11 +195,13 @@ public void testObserverStableRpc() throws Exception { FileStatus fileStatus = dfs.getFileStatus(tmpTestPath); assertSentTo(0); assertNotNull(fileStatus); + assertEquals(1, obRpcMetrics.getRpcStableCalls()); observerFsNS.getEditLogTailer().doTailEdits(); fileStatus = dfs.getFileStatus(tmpTestPath); assertSentTo(2); assertNotNull(fileStatus); + assertEquals(1, obRpcMetrics.getRpcStableCalls()); } finally { EditLogTailer editLogTailer = new EditLogTailer(observerFsNS, conf); observerFsNS.setEditLogTailerForTests(editLogTailer);