From 536a0713b977d5af5169f980856ad10dd3d9b8b3 Mon Sep 17 00:00:00 2001 From: Pallavi Adusumilli Date: Wed, 16 Dec 2015 15:06:11 -0800 Subject: [PATCH] HBASE-14976 Added RPC call queue size under queues tab --- .../apache/hadoop/hbase/regionserver/MetricsRegionServerSource.java | 3 +++ .../apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.java | 5 +++++ .../hadoop/hbase/regionserver/MetricsRegionServerSourceImpl.java | 2 ++ .../apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.jamon | 2 ++ .../src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java | 5 +++++ .../main/java/org/apache/hadoop/hbase/ipc/RpcServerInterface.java | 2 ++ .../hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java | 5 +++++ .../hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.java | 5 +++++ .../apache/hadoop/hbase/regionserver/TestMetricsRegionServer.java | 1 + 9 files changed, 30 insertions(+) diff --git a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSource.java b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSource.java index ee0217a..6adb725 100644 --- a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSource.java +++ b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSource.java @@ -327,4 +327,7 @@ public interface MetricsRegionServerSource extends BaseSource { String SPLIT_SUCCESS_KEY = "splitSuccessCount"; String SPLIT_SUCCESS_DESC = "Number of successfully executed splits"; String FLUSH_KEY = "flushTime"; + + String RPC_CALL_QUEUE_SIZE = "callQueueSize"; + String RPC_CALL_QUEUE_SIZE_DESC = "RPC call queue size"; } diff --git a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.java b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.java index 02dec8d..e924ce1 100644 --- a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.java +++ b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.java @@ -183,6 +183,11 @@ public interface MetricsRegionServerWrapper { int getFlushQueueSize(); /** + * Get the size of the RPC call queue. + */ + long getCallQueueSize(); + + /** * Get the size (in bytes) of the block cache that is free. */ long getBlockCacheFreeSize(); diff --git a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceImpl.java b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceImpl.java index f40811c..b014268 100644 --- a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceImpl.java +++ b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceImpl.java @@ -227,6 +227,8 @@ public class MetricsRegionServerSourceImpl rsWrap.getSplitQueueSize()) .addGauge(Interns.info(COMPACTION_QUEUE_LENGTH, COMPACTION_QUEUE_LENGTH_DESC), rsWrap.getCompactionQueueSize()) + .addGauge(Interns.info(RPC_CALL_QUEUE_SIZE, RPC_CALL_QUEUE_SIZE_DESC), + rsWrap.getCallQueueSize()) .addGauge(Interns.info(FLUSH_QUEUE_LENGTH, FLUSH_QUEUE_LENGTH_DESC), rsWrap.getFlushQueueSize()) .addGauge(Interns.info(BLOCK_CACHE_FREE_SIZE, BLOCK_CACHE_FREE_DESC), diff --git a/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.jamon b/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.jamon index 13ccc3b..09dfb71 100644 --- a/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.jamon +++ b/hbase-server/src/main/jamon/org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmpl.jamon @@ -189,11 +189,13 @@ MetricsRegionServerWrapper mWrap; Compaction Queue Size Flush Queue Size + Call Queue Size (bytes) <% mWrap.getCompactionQueueSize() %> <% mWrap.getFlushQueueSize() %> + <% StringUtils.humanReadableInt(mWrap.getCallQueueSize()) %> diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java index 2bef247..6c39fb5 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java @@ -2383,6 +2383,11 @@ public class RpcServer implements RpcServerInterface, ConfigurationObserver { this.callQueueSize.add(diff); } + @Override + public long getCallQueueSize() { + return this.callQueueSize.get(); + } + /** * Authorize the incoming client connection. * diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServerInterface.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServerInterface.java index ab8b485..3f0afd5 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServerInterface.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServerInterface.java @@ -67,6 +67,8 @@ public interface RpcServerInterface { */ void addCallSize(long diff); + long getCallQueueSize(); + /** * Refresh authentication manager policy. * @param pp diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java index f3e8916..97aff10 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java @@ -257,6 +257,11 @@ class MetricsRegionServerWrapperImpl } @Override + public long getCallQueueSize() { + return this.regionServer.getRpcServer().getCallQueueSize(); + } + + @Override public long getBlockCacheCount() { if (this.blockCache == null) { return 0; diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.java index 0d93284..671584f 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.java @@ -359,4 +359,9 @@ public class MetricsRegionServerWrapperStub implements MetricsRegionServerWrappe public double getMobFileCacheHitPercent() { return 50; } + + @Override + public long getCallQueueSize() { + return 100; + } } diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionServer.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionServer.java index f3ce0bd..3c3df70 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionServer.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionServer.java @@ -89,6 +89,7 @@ public class TestMetricsRegionServer { HELPER.assertGauge("blockCacheExpressHitPercent", 97, serverSource); HELPER.assertCounter("blockCacheFailedInsertionCount", 36, serverSource); HELPER.assertCounter("updatesBlockedTime", 419, serverSource); + HELPER.assertGauge("callQueueSize", 100, serverSource); } @Test -- 1.9.5