From aba2579f68036fd51997368646a7e9150933d504 Mon Sep 17 00:00:00 2001 From: "rahul.kumar" Date: Fri, 26 Feb 2021 12:50:31 +0530 Subject: [PATCH 1/3] HBASE-25460 : Expose drainingServers as cluster metric --- .../hbase/master/MetricsMasterSource.java | 4 ++++ .../hbase/master/MetricsMasterSourceImpl.java | 4 ++++ .../hbase/master/MetricsMasterWrapper.java | 14 ++++++++++++++ .../hbase/master/MetricsMasterWrapperImpl.java | 18 ++++++++++++++++++ .../hadoop/hbase/master/TestMasterMetrics.java | 7 ++++--- 5 files changed, 44 insertions(+), 3 deletions(-) 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 f947a3acb9c6..71eb1b26ff6e 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 @@ -55,8 +55,10 @@ public interface MetricsMasterSource extends BaseSource { String AVERAGE_LOAD_NAME = "averageLoad"; String LIVE_REGION_SERVERS_NAME = "liveRegionServers"; String DEAD_REGION_SERVERS_NAME = "deadRegionServers"; + String DRAINING_REGION_SERVER_NAME = "draininigRegionServers"; String NUM_REGION_SERVERS_NAME = "numRegionServers"; String NUM_DEAD_REGION_SERVERS_NAME = "numDeadRegionServers"; + String NUM_DRAINING_REGION_SERVERS_NAME = "numDrainingRegionServers"; String ZOOKEEPER_QUORUM_NAME = "zookeeperQuorum"; String SERVER_NAME_NAME = "serverName"; String CLUSTER_ID_NAME = "clusterId"; @@ -76,6 +78,8 @@ public interface MetricsMasterSource extends BaseSource { String NUMBER_OF_REGION_SERVERS_DESC = "Number of RegionServers"; String DEAD_REGION_SERVERS_DESC = "Names of dead RegionServers"; String NUMBER_OF_DEAD_REGION_SERVERS_DESC = "Number of dead RegionServers"; + String DRAINING_REGION_SERVER_DESC = "Names of draining RegionServers"; + String NUMBER_OF_DRAINING_REGION_SERVERS_DESC = "Number of draining RegionServers"; String ZOOKEEPER_QUORUM_DESC = "ZooKeeper Quorum"; String SERVER_NAME_DESC = "Server Name"; String CLUSTER_ID_DESC = "Cluster Id"; 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 62f3e5cc0894..dacb7a5aa206 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 @@ -117,6 +117,10 @@ public void getMetrics(MetricsCollector metricsCollector, boolean all) { .addGauge(Interns.info(NUM_DEAD_REGION_SERVERS_NAME, NUMBER_OF_DEAD_REGION_SERVERS_DESC), masterWrapper.getNumDeadRegionServers()) + .tag(Interns.info(DRAINING_REGION_SERVER_NAME, DRAINING_REGION_SERVER_DESC), + masterWrapper.getDrainingRegionServers()) + .addGauge(Interns.info(NUM_DRAINING_REGION_SERVERS_NAME, NUMBER_OF_REGION_SERVERS_DESC), + masterWrapper.getNumDrainingRegionServers()) .tag(Interns.info(ZOOKEEPER_QUORUM_NAME, ZOOKEEPER_QUORUM_DESC), masterWrapper.getZookeeperQuorum()) .tag(Interns.info(SERVER_NAME_NAME, SERVER_NAME_DESC), masterWrapper.getServerName()) diff --git a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterWrapper.java b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterWrapper.java index 77b357f315e3..1b3a75c3b84e 100644 --- a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterWrapper.java +++ b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterWrapper.java @@ -118,6 +118,20 @@ public interface MetricsMasterWrapper { */ int getNumDeadRegionServers(); + /** + * Get the draining region servers + * + * @return Draining region server + */ + String getDrainingRegionServers(); + + /** + * Get the number of draining region servers + * + * @return number of draining region servers + */ + int getNumDrainingRegionServers(); + /** * Get the number of master WAL files. */ diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.java index aeaae929209e..a53e6d4edcee 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.java @@ -138,6 +138,24 @@ public int getNumDeadRegionServers() { return !(master.isStopped() || master.isStopping()); } + @Override + public String getDrainingRegionServers() { + ServerManager serverManager = this.master.getServerManager(); + if (serverManager == null) { + return ""; + } + return StringUtils.join(serverManager.getDrainingServersList() , ";"); + } + + @Override + public int getNumDrainingRegionServers() { + ServerManager serverManager = this.master.getServerManager(); + if (serverManager == null) { + return 0; + } + return serverManager.getDrainingServersList().size(); + } + @Override public String getServerName() { ServerName serverName = master.getServerName(); 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 2208dd0d1972..9119ff7ca57b 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 @@ -130,9 +130,10 @@ public void testClusterRequests() throws Exception { public void testDefaultMasterMetrics() throws Exception { MetricsMasterSource masterSource = master.getMasterMetrics().getMetricsSource(); boolean tablesOnMaster = LoadBalancer.isTablesOnMaster(TEST_UTIL.getConfiguration()); - metricsHelper.assertGauge("numRegionServers", 1 + (tablesOnMaster ? 1 : 0), masterSource); - metricsHelper.assertGauge("averageLoad", 1, masterSource); - metricsHelper.assertGauge("numDeadRegionServers", 0, masterSource); + metricsHelper.assertGauge( "numRegionServers",1 + (tablesOnMaster? 1: 0), masterSource); + metricsHelper.assertGauge( "averageLoad", 1 + (tablesOnMaster? 0: 1), masterSource); + metricsHelper.assertGauge( "numDeadRegionServers", 0, masterSource); + metricsHelper.assertGauge( "numDrainingRegionServers", 0, masterSource); metricsHelper.assertGauge("masterStartTime", master.getMasterStartTime(), masterSource); metricsHelper.assertGauge("masterActiveTime", master.getMasterActiveTime(), masterSource); From 7086acb367497c53c0169b79326e631c33bf70b4 Mon Sep 17 00:00:00 2001 From: "rahul.kumar" Date: Fri, 26 Feb 2021 15:31:35 +0530 Subject: [PATCH 2/3] revert unwanted change --- .../org/apache/hadoop/hbase/master/TestMasterMetrics.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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 9119ff7ca57b..3a26d67ef975 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 @@ -130,9 +130,9 @@ public void testClusterRequests() throws Exception { public void testDefaultMasterMetrics() throws Exception { MetricsMasterSource masterSource = master.getMasterMetrics().getMetricsSource(); boolean tablesOnMaster = LoadBalancer.isTablesOnMaster(TEST_UTIL.getConfiguration()); - metricsHelper.assertGauge( "numRegionServers",1 + (tablesOnMaster? 1: 0), masterSource); - metricsHelper.assertGauge( "averageLoad", 1 + (tablesOnMaster? 0: 1), masterSource); - metricsHelper.assertGauge( "numDeadRegionServers", 0, masterSource); + metricsHelper.assertGauge("numRegionServers", 1 + (tablesOnMaster ? 1 : 0), masterSource); + metricsHelper.assertGauge("averageLoad", 1, masterSource); + metricsHelper.assertGauge("numDeadRegionServers", 0, masterSource); metricsHelper.assertGauge( "numDrainingRegionServers", 0, masterSource); metricsHelper.assertGauge("masterStartTime", master.getMasterStartTime(), masterSource); From 6461b2ec441ff308494b72e9245006e009b4fb98 Mon Sep 17 00:00:00 2001 From: "rahul.kumar" Date: Tue, 2 Mar 2021 17:56:45 +0530 Subject: [PATCH 3/3] indent fix --- .../hadoop/hbase/master/MetricsMasterWrapperImpl.java | 8 ++++---- .../org/apache/hadoop/hbase/master/TestMasterMetrics.java | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.java index a53e6d4edcee..e03c4df3aa35 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MetricsMasterWrapperImpl.java @@ -150,10 +150,10 @@ public String getDrainingRegionServers() { @Override public int getNumDrainingRegionServers() { ServerManager serverManager = this.master.getServerManager(); - if (serverManager == null) { - return 0; - } - return serverManager.getDrainingServersList().size(); + if (serverManager == null) { + return 0; + } + return serverManager.getDrainingServersList().size(); } @Override 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 3a26d67ef975..780be02a9744 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 @@ -133,7 +133,7 @@ public void testDefaultMasterMetrics() throws Exception { metricsHelper.assertGauge("numRegionServers", 1 + (tablesOnMaster ? 1 : 0), masterSource); metricsHelper.assertGauge("averageLoad", 1, masterSource); metricsHelper.assertGauge("numDeadRegionServers", 0, masterSource); - metricsHelper.assertGauge( "numDrainingRegionServers", 0, masterSource); + metricsHelper.assertGauge("numDrainingRegionServers", 0, masterSource); metricsHelper.assertGauge("masterStartTime", master.getMasterStartTime(), masterSource); metricsHelper.assertGauge("masterActiveTime", master.getMasterActiveTime(), masterSource);