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 ff6f5b8e5df8..9b134e94b1f7 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 @@ -17,18 +17,15 @@ */ package org.apache.hadoop.hbase.master; -import java.io.IOException; import java.util.AbstractMap.SimpleImmutableEntry; import java.util.Collections; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.apache.commons.lang3.StringUtils; import org.apache.hadoop.hbase.ServerName; import org.apache.hadoop.hbase.TableName; -import org.apache.hadoop.hbase.client.RegionInfo; -import org.apache.hadoop.hbase.client.TableDescriptor; +import org.apache.hadoop.hbase.master.RegionState; import org.apache.hadoop.hbase.quotas.QuotaObserverChore; import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshot; import org.apache.hadoop.hbase.util.PairOfSameType; @@ -217,26 +214,22 @@ Entry convertSnapshot(SpaceQuotaSnapshot snapshot) { @Override public PairOfSameType getRegionCounts() { - try { - if (!master.isInitialized()) { - return new PairOfSameType<>(0, 0); + if (!master.isInitialized() || master.getAssignmentManager() == null) { + return new PairOfSameType<>(0, 0); + } + int onlineRegionCount = 0; + int offlineRegionCount = 0; + for (RegionState rs : master.getAssignmentManager().getRegionStates().getRegionStates()) { + if (rs.getRegion().getTable().isSystemTable()) { + continue; } - Integer onlineRegionCount = 0; - Integer offlineRegionCount = 0; - - List descriptors = master.listTableDescriptors(null, null, null, false); - - for (TableDescriptor htDesc : descriptors) { - TableName tableName = htDesc.getTableName(); - Map> tableRegions = - master.getAssignmentManager().getRegionStates().getRegionByStateOfTable(tableName); - onlineRegionCount += tableRegions.get(RegionState.State.OPEN).size(); - offlineRegionCount += tableRegions.get(RegionState.State.OFFLINE).size(); + if (rs.isOpened()) { + onlineRegionCount++; + } else if (rs.isOffline()) { + offlineRegionCount++; } - return new PairOfSameType<>(onlineRegionCount, offlineRegionCount); - } catch (IOException e) { - return new PairOfSameType<>(0, 0); } + return new PairOfSameType<>(onlineRegionCount, offlineRegionCount); } @Override diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestZooKeeper.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestZooKeeper.java index fc5822477937..8b9736aefb69 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestZooKeeper.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestZooKeeper.java @@ -75,7 +75,6 @@ public static void setUpBeforeClass() throws Exception { conf.setInt(HConstants.ZK_SESSION_TIMEOUT, 1000); conf.setClass(HConstants.HBASE_MASTER_LOADBALANCER_CLASS, MockLoadBalancer.class, LoadBalancer.class); - TEST_UTIL.startMiniDFSCluster(2); } @AfterAll