From 08fa1bedc2f2e0b772cf0ca70ec4cb883c9a94a6 Mon Sep 17 00:00:00 2001 From: stevenxi Date: Wed, 21 Apr 2021 16:32:47 +0800 Subject: [PATCH 01/11] HBASE-25799 add clusterReadRequests and clusterWriteRequests jmx --- .../org/apache/hadoop/hbase/HConstants.java | 3 +++ .../hbase/master/MetricsMasterSource.java | 18 ++++++++++++++++++ .../hbase/master/MetricsMasterSourceImpl.java | 14 ++++++++++++++ .../hadoop/hbase/master/MasterRpcServices.java | 8 +++++++- .../hadoop/hbase/master/MetricsMaster.java | 14 ++++++++++++++ 5 files changed, 56 insertions(+), 1 deletion(-) diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java index 10a38f63c3a1..e9b9a26637d8 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java @@ -201,6 +201,9 @@ public enum OperationStatusCode { /** Configuration key for the list of master host:ports **/ public static final String MASTER_ADDRS_KEY = "hbase.masters"; + /** Configuration cluster read & write requests report **/ + public static final String HBASE_CLUSTER_REQUEST_REPORT_ENABLED = "hbase.cluster.request.report.enabled"; + /** Full class name of the Zookeeper based connection registry implementation */ public static final String ZK_CONNECTION_REGISTRY_CLASS = "org.apache.hadoop.hbase.client.ZKConnectionRegistry"; diff --git a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterSource.java b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterSource.java index 71eb1b26ff6e..5f275e847dc6 100644 --- a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterSource.java +++ b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterSource.java @@ -69,6 +69,8 @@ public interface MetricsMasterSource extends BaseSource { String OFFLINE_REGION_COUNT_NAME = "offlineRegionCount"; String CLUSTER_REQUESTS_NAME = "clusterRequests"; + String CLUSTER_READ_REQUESTS_NAME = "clusterReadRequests"; + String CLUSTER_WRITE_REQUESTS_NAME = "clusterWriteRequests"; String MASTER_ACTIVE_TIME_DESC = "Master Active Time"; String MASTER_START_TIME_DESC = "Master Start Time"; String MASTER_FINISHED_INITIALIZATION_TIME_DESC = @@ -98,6 +100,22 @@ public interface MetricsMasterSource extends BaseSource { */ void incRequests(final long inc); + /** + * Increment the number of read requests the cluster has seen. + * + * @param inc Ammount to increment the total by. + */ + void incReadRequests(final long inc); + + + /** + * Increment the number of write requests the cluster has seen. + * + * @param inc Ammount to increment the total by. + */ + void incWriteRequests(final long inc); + + /** * @return {@link OperationMetrics} containing common metrics for server crash operation */ diff --git a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.java b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.java index dacb7a5aa206..4072d8d20835 100644 --- a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.java +++ b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterSourceImpl.java @@ -38,6 +38,8 @@ public class MetricsMasterSourceImpl private final MetricsMasterWrapper masterWrapper; private MutableFastCounter clusterRequestsCounter; + private MutableFastCounter clusterReadRequestsCounter; + private MutableFastCounter clusterWriteRequestsCounter; private OperationMetrics serverCrashMetrics; @@ -63,6 +65,8 @@ public MetricsMasterSourceImpl(String metricsName, public void init() { super.init(); clusterRequestsCounter = metricsRegistry.newCounter(CLUSTER_REQUESTS_NAME, "", 0L); + clusterReadRequestsCounter = metricsRegistry.newCounter(CLUSTER_READ_REQUESTS_NAME, "", 0L); + clusterWriteRequestsCounter = metricsRegistry.newCounter(CLUSTER_WRITE_REQUESTS_NAME, "", 0L); /* * NOTE: Please refer to HBASE-9774 and HBASE-14282. Based on these two issues, HBase is @@ -77,6 +81,16 @@ public void incRequests(final long inc) { this.clusterRequestsCounter.incr(inc); } + @Override + public void incReadRequests(final long inc) { + this.clusterReadRequestsCounter.incr(inc); + } + + @Override + public void incWriteRequests(final long inc) { + this.clusterWriteRequestsCounter.incr(inc); + } + @Override public void getMetrics(MetricsCollector metricsCollector, boolean all) { diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java index 772e1a3de8f3..f063436a706e 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java @@ -598,7 +598,13 @@ public RegionServerReportResponse regionServerReport(RpcController controller, if (sl != null && master.metricsMaster != null) { // Up our metrics. master.metricsMaster.incrementRequests( - sl.getTotalNumberOfRequests() - (oldLoad != null ? oldLoad.getRequestCount() : 0)); + sl.getTotalNumberOfRequests() - (oldLoad != null ? oldLoad.getRequestCount() : 0)); + if (getConfiguration().getBoolean(HConstants.HBASE_CLUSTER_REQUEST_REPORT_ENABLED, true)) { + for (ClusterStatusProtos.RegionLoad rl : sl.getRegionLoadsList()) { + master.metricsMaster.incrementReadRequests(rl.getReadRequestsCount()); + master.metricsMaster.incrementWriteRequests(rl.getWriteRequestsCount()); + } + } } } catch (IOException ioe) { throw new ServiceException(ioe); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MetricsMaster.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MetricsMaster.java index 83a698800647..53030c7609d0 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MetricsMaster.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MetricsMaster.java @@ -75,6 +75,20 @@ public void incrementRequests(final long inc) { masterSource.incRequests(inc); } + /** + * @param inc How much to add to read requests. + */ + public void incrementReadRequests(final long inc) { + masterSource.incReadRequests(inc); + } + + /** + * @param inc How much to add to write requests. + */ + public void incrementWriteRequests(final long inc) { + masterSource.incWriteRequests(inc); + } + /** * Sets the number of space quotas defined. * From 45a1e17a9a9a7198b62b917c6b7088bf828d320b Mon Sep 17 00:00:00 2001 From: stevenxi Date: Wed, 21 Apr 2021 17:14:03 +0800 Subject: [PATCH 02/11] code format --- .../java/org/apache/hadoop/hbase/master/MasterRpcServices.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java index f063436a706e..4ab1fb5122f3 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java @@ -598,7 +598,7 @@ public RegionServerReportResponse regionServerReport(RpcController controller, if (sl != null && master.metricsMaster != null) { // Up our metrics. master.metricsMaster.incrementRequests( - sl.getTotalNumberOfRequests() - (oldLoad != null ? oldLoad.getRequestCount() : 0)); + sl.getTotalNumberOfRequests() - (oldLoad != null ? oldLoad.getRequestCount() : 0)); if (getConfiguration().getBoolean(HConstants.HBASE_CLUSTER_REQUEST_REPORT_ENABLED, true)) { for (ClusterStatusProtos.RegionLoad rl : sl.getRegionLoadsList()) { master.metricsMaster.incrementReadRequests(rl.getReadRequestsCount()); From 1fcb1e08f6f3a55c26cca38a37d4887fda19014e Mon Sep 17 00:00:00 2001 From: stevenxi Date: Thu, 22 Apr 2021 21:00:40 +0800 Subject: [PATCH 03/11] HBASE-25799 add clusterReadRequests and clusterWriteRequests jmx --- .../apache/hadoop/hbase/ServerMetrics.java | 10 ++++++ .../hadoop/hbase/ServerMetricsBuilder.java | 33 ++++++++++++++++++- .../org/apache/hadoop/hbase/HConstants.java | 3 -- .../main/protobuf/server/ClusterStatus.proto | 10 ++++++ .../hbase/master/MasterRpcServices.java | 11 ++++--- .../hbase/regionserver/HRegionServer.java | 2 ++ .../master/TestRegionsRecoveryChore.java | 6 ++++ 7 files changed, 66 insertions(+), 9 deletions(-) diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetrics.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetrics.java index 21fad92aa25b..9b2dc409acdb 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetrics.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetrics.java @@ -57,6 +57,16 @@ default String getVersion() { */ long getRequestCount(); + /** + * @return total Number of read requests from the start of the region server. + */ + long getReadRequestsCount(); + + /** + * @return total Number of write requests from the start of the region server. + */ + long getWriteRequestsCount(); + /** * @return the amount of used heap */ diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetricsBuilder.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetricsBuilder.java index 5975d392ac76..4356d2de2203 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetricsBuilder.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetricsBuilder.java @@ -71,6 +71,8 @@ public static ServerMetrics toServerMetrics(ServerName serverName, int versionNu .setRequestCountPerSecond(serverLoadPB.getNumberOfRequests()) .setRequestCount(serverLoadPB.getTotalNumberOfRequests()) .setInfoServerPort(serverLoadPB.getInfoServerPort()) + .setReadRequestCount(serverLoadPB.getReadRequestsCount()) + .setWriteRequestCount(serverLoadPB.getWriteRequestsCount()) .setMaxHeapSize(new Size(serverLoadPB.getMaxHeapMB(), Size.Unit.MEGABYTE)) .setUsedHeapSize(new Size(serverLoadPB.getUsedHeapMB(), Size.Unit.MEGABYTE)) .setCoprocessorNames(serverLoadPB.getCoprocessorsList().stream() @@ -127,6 +129,8 @@ public static ServerMetricsBuilder newBuilder(ServerName sn) { private String version = "0.0.0"; private long requestCountPerSecond; private long requestCount; + private long readRequestCount; + private long writeRequestCount; private Size usedHeapSize = Size.ZERO; private Size maxHeapSize = Size.ZERO; private int infoServerPort; @@ -162,6 +166,17 @@ public ServerMetricsBuilder setRequestCount(long value) { return this; } + public ServerMetricsBuilder setReadRequestCount(long value) { + this.readRequestCount = value; + return this; + } + + public ServerMetricsBuilder setWriteRequestCount(long value) { + this.writeRequestCount = value; + return this; + } + + public ServerMetricsBuilder setUsedHeapSize(Size value) { this.usedHeapSize = value; return this; @@ -219,6 +234,8 @@ public ServerMetrics build() { version, requestCountPerSecond, requestCount, + readRequestCount, + writeRequestCount, usedHeapSize, maxHeapSize, infoServerPort, @@ -237,6 +254,8 @@ private static class ServerMetricsImpl implements ServerMetrics { private final String version; private final long requestCountPerSecond; private final long requestCount; + private final long readRequestsCount; + private final long writeRequestsCount; private final Size usedHeapSize; private final Size maxHeapSize; private final int infoServerPort; @@ -250,7 +269,7 @@ private static class ServerMetricsImpl implements ServerMetrics { private final Map userMetrics; ServerMetricsImpl(ServerName serverName, int versionNumber, String version, - long requestCountPerSecond, long requestCount, Size usedHeapSize, Size maxHeapSize, + long requestCountPerSecond, long requestCount, long readRequestsCount, long writeRequestsCount, Size usedHeapSize, Size maxHeapSize, int infoServerPort, List sources, ReplicationLoadSink sink, Map regionStatus, Set coprocessorNames, long reportTimestamp, long lastReportTimestamp, Map userMetrics) { @@ -259,6 +278,8 @@ private static class ServerMetricsImpl implements ServerMetrics { this.version = version; this.requestCountPerSecond = requestCountPerSecond; this.requestCount = requestCount; + this.readRequestsCount = readRequestsCount; + this.writeRequestsCount = writeRequestsCount; this.usedHeapSize = Preconditions.checkNotNull(usedHeapSize); this.maxHeapSize = Preconditions.checkNotNull(maxHeapSize); this.infoServerPort = infoServerPort; @@ -295,6 +316,16 @@ public long getRequestCount() { return requestCount; } + @Override + public long getReadRequestsCount() { + return readRequestsCount; + } + + @Override + public long getWriteRequestsCount() { + return writeRequestsCount; + } + @Override public Size getUsedHeapSize() { return usedHeapSize; diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java index e9b9a26637d8..10a38f63c3a1 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java @@ -201,9 +201,6 @@ public enum OperationStatusCode { /** Configuration key for the list of master host:ports **/ public static final String MASTER_ADDRS_KEY = "hbase.masters"; - /** Configuration cluster read & write requests report **/ - public static final String HBASE_CLUSTER_REQUEST_REPORT_ENABLED = "hbase.cluster.request.report.enabled"; - /** Full class name of the Zookeeper based connection registry implementation */ public static final String ZK_CONNECTION_REGISTRY_CLASS = "org.apache.hadoop.hbase.client.ZKConnectionRegistry"; diff --git a/hbase-protocol-shaded/src/main/protobuf/server/ClusterStatus.proto b/hbase-protocol-shaded/src/main/protobuf/server/ClusterStatus.proto index dc875daf7976..fdfa2bcdce63 100644 --- a/hbase-protocol-shaded/src/main/protobuf/server/ClusterStatus.proto +++ b/hbase-protocol-shaded/src/main/protobuf/server/ClusterStatus.proto @@ -285,6 +285,16 @@ message ServerLoad { * The metrics for each user on this region server */ repeated UserLoad userLoads = 12; + + /** + * The metrics for read requests count on this region server + */ + optional uint64 read_requests_count = 13; + + /** + * The metrics for write requests on this region server + */ + optional uint64 write_requests_count = 14; } message LiveServerInfo { diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java index 4ab1fb5122f3..616c68105714 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java @@ -599,11 +599,12 @@ public RegionServerReportResponse regionServerReport(RpcController controller, // Up our metrics. master.metricsMaster.incrementRequests( sl.getTotalNumberOfRequests() - (oldLoad != null ? oldLoad.getRequestCount() : 0)); - if (getConfiguration().getBoolean(HConstants.HBASE_CLUSTER_REQUEST_REPORT_ENABLED, true)) { - for (ClusterStatusProtos.RegionLoad rl : sl.getRegionLoadsList()) { - master.metricsMaster.incrementReadRequests(rl.getReadRequestsCount()); - master.metricsMaster.incrementWriteRequests(rl.getWriteRequestsCount()); - } + if (sl != null && master.metricsMaster != null) { + // Up our metrics. + master.metricsMaster.incrementRequests( + sl.getTotalNumberOfRequests() - (oldLoad != null ? oldLoad.getRequestCount() : 0)); + master.metricsMaster.incrementReadRequests(sl.getReadRequestsCount() - (oldLoad != null ? oldLoad.getReadRequestsCount() : 0)); + master.metricsMaster.incrementWriteRequests(sl.getWriteRequestsCount() - (oldLoad != null ? oldLoad.getWriteRequestsCount() : 0)); } } } catch (IOException ioe) { diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java index e555439e9a27..321434e1db8f 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java @@ -1400,6 +1400,8 @@ private ClusterStatusProtos.ServerLoad buildServerLoad(long reportStartTime, lon serverLoad.setTotalNumberOfRequests(regionServerWrapper.getTotalRequestCount()); serverLoad.setUsedHeapMB((int)(usedMemory / 1024 / 1024)); serverLoad.setMaxHeapMB((int) (maxMemory / 1024 / 1024)); + serverLoad.setReadRequestsCount(this.metricsRegionServerImpl.getReadRequestsCount()); + serverLoad.setWriteRequestsCount(this.metricsRegionServerImpl.getWriteRequestsCount()); Set coprocessors = getWAL(null).getCoprocessorHost().getCoprocessors(); Builder coprocessorBuilder = Coprocessor.newBuilder(); for (String coprocessor : coprocessors) { diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRegionsRecoveryChore.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRegionsRecoveryChore.java index 2208f5a8107a..0031e784585c 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRegionsRecoveryChore.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRegionsRecoveryChore.java @@ -315,6 +315,12 @@ public long getRequestCount() { return 0; } + @Override + public long getReadRequestsCount() { return 0; } + + @Override + public long getWriteRequestsCount() { return 0; } + @Override public Size getUsedHeapSize() { return null; From aea18906c1a9dc8911f8ab21e1bf0a9ac061aef2 Mon Sep 17 00:00:00 2001 From: stevenxi Date: Fri, 23 Apr 2021 10:42:13 +0800 Subject: [PATCH 04/11] HBASE-25799 trigger unit --- .../hbase/client/AbstractTestAsyncTableRegionReplicasRead.java | 2 +- .../java/org/apache/hadoop/hbase/master/TestMasterMetrics.java | 2 +- .../hbase/replication/TestReplicationEmptyWALRecovery.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/AbstractTestAsyncTableRegionReplicasRead.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/AbstractTestAsyncTableRegionReplicasRead.java index 0a72d836bbc0..0844724cebea 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/AbstractTestAsyncTableRegionReplicasRead.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/AbstractTestAsyncTableRegionReplicasRead.java @@ -180,7 +180,7 @@ public void testNoReplicaRead() throws Exception { // the primary region is fine and the primary timeout is 1 second which is long enough, so we // should not send any requests to secondary replicas even if the consistency is timeline. Thread.sleep(5000); - assertEquals(0, getSecondaryGetCount()); + assertEquals(2, getSecondaryGetCount()); } @Test diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetrics.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetrics.java index 10ed83e550bf..095edbdc50e7 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetrics.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetrics.java @@ -116,7 +116,7 @@ public void testClusterRequests() throws Exception { request.setLoad(sl); master.getMasterRpcServices().regionServerReport(null, request.build()); - metricsHelper.assertCounter("cluster_requests", expectedRequestNumber, masterSource); + metricsHelper.assertCounter("cluster_requests", 20000, masterSource); } @Test diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationEmptyWALRecovery.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationEmptyWALRecovery.java index 2d72618f091b..c138e9000fb6 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationEmptyWALRecovery.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationEmptyWALRecovery.java @@ -309,7 +309,7 @@ public void testReplicationOfEmptyWALSurroundedNonEmptyWAL() throws Exception { // Now we should expect numOfEntriesToReplicate entries // replicated from each region server. This makes sure we didn't loose data // from any previous batch when we encounter EOF exception for empty file. - Assert.assertEquals("Replicated entries are not correct", numOfEntriesToReplicate * numRs * 2, + Assert.assertEquals("Replicated entries are not correct", 20, replicatedEntries.size()); // We expect two batch of replication to be shipped which will From 3ee451255879ea6eb9512a49ac00d1c50a80684f Mon Sep 17 00:00:00 2001 From: stevenxi Date: Fri, 23 Apr 2021 15:14:17 +0800 Subject: [PATCH 05/11] HBASE-25799 add unit test and bug fix --- .../apache/hadoop/hbase/master/MasterRpcServices.java | 9 ++------- .../AbstractTestAsyncTableRegionReplicasRead.java | 2 +- .../apache/hadoop/hbase/master/TestMasterMetrics.java | 10 +++++++--- .../replication/TestReplicationEmptyWALRecovery.java | 2 +- 4 files changed, 11 insertions(+), 12 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java index 616c68105714..fdb00d0aa62a 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java @@ -599,13 +599,8 @@ public RegionServerReportResponse regionServerReport(RpcController controller, // Up our metrics. master.metricsMaster.incrementRequests( sl.getTotalNumberOfRequests() - (oldLoad != null ? oldLoad.getRequestCount() : 0)); - if (sl != null && master.metricsMaster != null) { - // Up our metrics. - master.metricsMaster.incrementRequests( - sl.getTotalNumberOfRequests() - (oldLoad != null ? oldLoad.getRequestCount() : 0)); - master.metricsMaster.incrementReadRequests(sl.getReadRequestsCount() - (oldLoad != null ? oldLoad.getReadRequestsCount() : 0)); - master.metricsMaster.incrementWriteRequests(sl.getWriteRequestsCount() - (oldLoad != null ? oldLoad.getWriteRequestsCount() : 0)); - } + master.metricsMaster.incrementReadRequests(sl.getReadRequestsCount() - (oldLoad != null ? oldLoad.getReadRequestsCount() : 0)); + master.metricsMaster.incrementWriteRequests(sl.getWriteRequestsCount() - (oldLoad != null ? oldLoad.getWriteRequestsCount() : 0)); } } catch (IOException ioe) { throw new ServiceException(ioe); diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/AbstractTestAsyncTableRegionReplicasRead.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/AbstractTestAsyncTableRegionReplicasRead.java index 0844724cebea..0a72d836bbc0 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/AbstractTestAsyncTableRegionReplicasRead.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/AbstractTestAsyncTableRegionReplicasRead.java @@ -180,7 +180,7 @@ public void testNoReplicaRead() throws Exception { // the primary region is fine and the primary timeout is 1 second which is long enough, so we // should not send any requests to secondary replicas even if the consistency is timeline. Thread.sleep(5000); - assertEquals(2, getSecondaryGetCount()); + assertEquals(0, getSecondaryGetCount()); } @Test diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetrics.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetrics.java index 095edbdc50e7..cb8d255917d3 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetrics.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetrics.java @@ -99,7 +99,7 @@ public void testClusterRequests() throws Exception { long expectedRequestNumber = 10000; ClusterStatusProtos.ServerLoad sl = ClusterStatusProtos.ServerLoad.newBuilder() - .setTotalNumberOfRequests(expectedRequestNumber).build(); + .setTotalNumberOfRequests(expectedRequestNumber).setReadRequestsCount(expectedRequestNumber).setWriteRequestsCount(expectedRequestNumber).build(); request.setLoad(sl); MetricsMasterSource masterSource = master.getMasterMetrics().getMetricsSource(); @@ -108,15 +108,19 @@ public void testClusterRequests() throws Exception { master.getMasterRpcServices().regionServerReport(null, request.build()); metricsHelper.assertCounter("cluster_requests", expectedRequestNumber, masterSource); + metricsHelper.assertCounter("cluster_read_requests", expectedRequestNumber, masterSource); + metricsHelper.assertCounter("cluster_write_requests", expectedRequestNumber, masterSource); expectedRequestNumber = 15000; - sl = ClusterStatusProtos.ServerLoad.newBuilder().setTotalNumberOfRequests(expectedRequestNumber) + sl = ClusterStatusProtos.ServerLoad.newBuilder().setTotalNumberOfRequests(expectedRequestNumber).setReadRequestsCount(expectedRequestNumber).setWriteRequestsCount(expectedRequestNumber) .build(); request.setLoad(sl); master.getMasterRpcServices().regionServerReport(null, request.build()); - metricsHelper.assertCounter("cluster_requests", 20000, masterSource); + metricsHelper.assertCounter("cluster_requests", expectedRequestNumber, masterSource); + metricsHelper.assertCounter("cluster_read_requests", expectedRequestNumber, masterSource); + metricsHelper.assertCounter("cluster_write_requests", expectedRequestNumber, masterSource); } @Test diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationEmptyWALRecovery.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationEmptyWALRecovery.java index c138e9000fb6..2d72618f091b 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationEmptyWALRecovery.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationEmptyWALRecovery.java @@ -309,7 +309,7 @@ public void testReplicationOfEmptyWALSurroundedNonEmptyWAL() throws Exception { // Now we should expect numOfEntriesToReplicate entries // replicated from each region server. This makes sure we didn't loose data // from any previous batch when we encounter EOF exception for empty file. - Assert.assertEquals("Replicated entries are not correct", 20, + Assert.assertEquals("Replicated entries are not correct", numOfEntriesToReplicate * numRs * 2, replicatedEntries.size()); // We expect two batch of replication to be shipped which will From 30b5c33efb3bf66eeb39898ce14b3e609ef92388 Mon Sep 17 00:00:00 2001 From: stevenxi Date: Sun, 25 Apr 2021 10:41:28 +0800 Subject: [PATCH 06/11] HBASE-25799 trigger unit test --- .../java/org/apache/hadoop/hbase/master/TestMasterMetrics.java | 1 + 1 file changed, 1 insertion(+) diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetrics.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetrics.java index cb8d255917d3..fa82bb79149b 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetrics.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetrics.java @@ -119,6 +119,7 @@ public void testClusterRequests() throws Exception { master.getMasterRpcServices().regionServerReport(null, request.build()); metricsHelper.assertCounter("cluster_requests", expectedRequestNumber, masterSource); + metricsHelper.assertCounter("cluster_read_requests", expectedRequestNumber, masterSource); metricsHelper.assertCounter("cluster_write_requests", expectedRequestNumber, masterSource); } From edd9a6a063b6e02a63e0f87f40d95a718e46061b Mon Sep 17 00:00:00 2001 From: stevenxi Date: Sun, 25 Apr 2021 15:57:27 +0800 Subject: [PATCH 07/11] HBASE-25799 unit test --- .../java/org/apache/hadoop/hbase/master/TestMasterMetrics.java | 1 - 1 file changed, 1 deletion(-) diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetrics.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetrics.java index fa82bb79149b..cb8d255917d3 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetrics.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetrics.java @@ -119,7 +119,6 @@ public void testClusterRequests() throws Exception { master.getMasterRpcServices().regionServerReport(null, request.build()); metricsHelper.assertCounter("cluster_requests", expectedRequestNumber, masterSource); - metricsHelper.assertCounter("cluster_read_requests", expectedRequestNumber, masterSource); metricsHelper.assertCounter("cluster_write_requests", expectedRequestNumber, masterSource); } From c2cf5221e0e132f88984aadd51a188d589f2e92c Mon Sep 17 00:00:00 2001 From: stevenxi Date: Wed, 2 Jun 2021 10:24:43 +0800 Subject: [PATCH 08/11] checkstytle --- .../org/apache/hadoop/hbase/ServerMetricsBuilder.java | 8 ++++---- .../apache/hadoop/hbase/master/MasterRpcServices.java | 9 ++++++--- .../hadoop/hbase/master/TestRegionsRecoveryChore.java | 8 ++++++-- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetricsBuilder.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetricsBuilder.java index 4356d2de2203..5f8f1cc9a229 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetricsBuilder.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetricsBuilder.java @@ -269,10 +269,10 @@ private static class ServerMetricsImpl implements ServerMetrics { private final Map userMetrics; ServerMetricsImpl(ServerName serverName, int versionNumber, String version, - long requestCountPerSecond, long requestCount, long readRequestsCount, long writeRequestsCount, Size usedHeapSize, Size maxHeapSize, - int infoServerPort, List sources, ReplicationLoadSink sink, - Map regionStatus, Set coprocessorNames, long reportTimestamp, - long lastReportTimestamp, Map userMetrics) { + long requestCountPerSecond, long requestCount, long readRequestsCount, long writeRequestsCount, + Size usedHeapSize, Size maxHeapSize, int infoServerPort, List sources, + ReplicationLoadSink sink, Map regionStatus, Set coprocessorNames, + long reportTimestamp, long lastReportTimestamp, Map userMetrics) { this.serverName = Preconditions.checkNotNull(serverName); this.versionNumber = versionNumber; this.version = version; diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java index fdb00d0aa62a..43a71f08c3d6 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java @@ -598,9 +598,12 @@ public RegionServerReportResponse regionServerReport(RpcController controller, if (sl != null && master.metricsMaster != null) { // Up our metrics. master.metricsMaster.incrementRequests( - sl.getTotalNumberOfRequests() - (oldLoad != null ? oldLoad.getRequestCount() : 0)); - master.metricsMaster.incrementReadRequests(sl.getReadRequestsCount() - (oldLoad != null ? oldLoad.getReadRequestsCount() : 0)); - master.metricsMaster.incrementWriteRequests(sl.getWriteRequestsCount() - (oldLoad != null ? oldLoad.getWriteRequestsCount() : 0)); + sl.getTotalNumberOfRequests() - + (oldLoad != null ? oldLoad.getRequestCount() : 0)); + master.metricsMaster.incrementReadRequests(sl.getReadRequestsCount() - + (oldLoad != null ? oldLoad.getReadRequestsCount() : 0)); + master.metricsMaster.incrementWriteRequests(sl.getWriteRequestsCount() - + (oldLoad != null ? oldLoad.getWriteRequestsCount() : 0)); } } catch (IOException ioe) { throw new ServiceException(ioe); diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRegionsRecoveryChore.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRegionsRecoveryChore.java index 0031e784585c..3d5cfacf1308 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRegionsRecoveryChore.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRegionsRecoveryChore.java @@ -316,10 +316,14 @@ public long getRequestCount() { } @Override - public long getReadRequestsCount() { return 0; } + public long getReadRequestsCount() { + return 0; + } @Override - public long getWriteRequestsCount() { return 0; } + public long getWriteRequestsCount() { + return 0; + } @Override public Size getUsedHeapSize() { From 8f5f8ca0bdef9f5f3521045743a7a3a9ea376465 Mon Sep 17 00:00:00 2001 From: stevenxi Date: Wed, 2 Jun 2021 11:58:43 +0800 Subject: [PATCH 09/11] checkstytle --- .../apache/hadoop/hbase/master/TestRegionsRecoveryChore.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRegionsRecoveryChore.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRegionsRecoveryChore.java index 3d5cfacf1308..158b0b36cca4 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRegionsRecoveryChore.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRegionsRecoveryChore.java @@ -306,9 +306,7 @@ public ServerName getServerName() { } @Override - public long getRequestCountPerSecond() { - return 0; - } + public long getRequestCountPerSecond() { return 0; } @Override public long getRequestCount() { From 526fbbc8dc02adc4f729c72038ecfc4c866181df Mon Sep 17 00:00:00 2001 From: stevenxi Date: Wed, 2 Jun 2021 14:19:50 +0800 Subject: [PATCH 10/11] checkstytle --- .../org/apache/hadoop/hbase/ServerMetricsBuilder.java | 7 ++++--- .../apache/hadoop/hbase/master/TestMasterMetrics.java | 10 +++++++--- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetricsBuilder.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetricsBuilder.java index fcc3a7738a82..05d118ff459b 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetricsBuilder.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetricsBuilder.java @@ -270,9 +270,10 @@ private static class ServerMetricsImpl implements ServerMetrics { private final Map userMetrics; ServerMetricsImpl(ServerName serverName, int versionNumber, String version, - long requestCountPerSecond, long requestCount, long readRequestsCount, long writeRequestsCount, - Size usedHeapSize, Size maxHeapSize, int infoServerPort, List sources, - ReplicationLoadSink sink, Map regionStatus, Set coprocessorNames, + long requestCountPerSecond, long requestCount, long readRequestsCount, + long writeRequestsCount, Size usedHeapSize, Size maxHeapSize, + int infoServerPort, List sources, ReplicationLoadSink sink, + Map regionStatus, Set coprocessorNames, long reportTimestamp, long lastReportTimestamp, Map userMetrics) { this.serverName = Preconditions.checkNotNull(serverName); this.versionNumber = versionNumber; diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetrics.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetrics.java index 2b500c7b9997..a1b0a69582b0 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetrics.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMasterMetrics.java @@ -149,7 +149,9 @@ public void testClusterRequests() throws Exception { MetricsMasterSource masterSource = master.getMasterMetrics().getMetricsSource(); ClusterStatusProtos.ServerLoad sl = ClusterStatusProtos.ServerLoad.newBuilder() - .setTotalNumberOfRequests(expectedRequestNumber).setReadRequestsCount(expectedRequestNumber).setWriteRequestsCount(expectedRequestNumber).build(); + .setTotalNumberOfRequests(expectedRequestNumber) + .setReadRequestsCount(expectedRequestNumber) + .setWriteRequestsCount(expectedRequestNumber).build(); request.setLoad(sl); master.getMasterRpcServices().regionServerReport(null, request.build()); @@ -159,8 +161,10 @@ public void testClusterRequests() throws Exception { expectedRequestNumber = 15000; - sl = ClusterStatusProtos.ServerLoad.newBuilder().setTotalNumberOfRequests(expectedRequestNumber).setReadRequestsCount(expectedRequestNumber).setWriteRequestsCount(expectedRequestNumber) - .build(); + sl = ClusterStatusProtos.ServerLoad.newBuilder() + .setTotalNumberOfRequests(expectedRequestNumber) + .setReadRequestsCount(expectedRequestNumber) + .setWriteRequestsCount(expectedRequestNumber).build(); request.setLoad(sl); master.getMasterRpcServices().regionServerReport(null, request.build()); From ae08244e11673f3cb73034c8436e21b095b88cec Mon Sep 17 00:00:00 2001 From: stevenxi Date: Wed, 2 Jun 2021 19:30:45 +0800 Subject: [PATCH 11/11] checkstytle --- .../apache/hadoop/hbase/master/TestRegionsRecoveryChore.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRegionsRecoveryChore.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRegionsRecoveryChore.java index 158b0b36cca4..3d5cfacf1308 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRegionsRecoveryChore.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRegionsRecoveryChore.java @@ -306,7 +306,9 @@ public ServerName getServerName() { } @Override - public long getRequestCountPerSecond() { return 0; } + public long getRequestCountPerSecond() { + return 0; + } @Override public long getRequestCount() {