From 922894c96e7cd5a057c96b272a98b9dc7dc721eb Mon Sep 17 00:00:00 2001 From: Chia-Ping Tsai Date: Thu, 8 Jun 2017 16:16:56 +0800 Subject: [PATCH] HBASE-18193 Master web UI presents the incorrect number of regions --- .../hbase/master/assignment/RegionStates.java | 4 +++- .../hbase/client/TestAsyncRegionAdminApi.java | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/RegionStates.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/RegionStates.java index 082e1710999..32be1342873 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/RegionStates.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/RegionStates.java @@ -686,7 +686,9 @@ public class RegionStates { } for (RegionStateNode node: regionsMap.values()) { - tableRegions.get(node.getState()).add(node.getRegionInfo()); + if (node.getTable().equals(tableName)) { + tableRegions.get(node.getState()).add(node.getRegionInfo()); + } } return tableRegions; } diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAsyncRegionAdminApi.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAsyncRegionAdminApi.java index 17a6d9b3a6f..3bdd5fdc94e 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAsyncRegionAdminApi.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAsyncRegionAdminApi.java @@ -416,6 +416,25 @@ public class TestAsyncRegionAdminApi extends TestAsyncAdminBase { } } + @Test + public void testGetRegionByStateOfTable() throws Exception { + final TableName tableName = TableName.valueOf("testGetRegionByStateOfTable"); + try { + HRegionInfo hri = createTableAndGetOneRegion(tableName); + + RegionStates regionStates = + TEST_UTIL.getHBaseCluster().getMaster().getAssignmentManager().getRegionStates(); + assertTrue(regionStates.getRegionByStateOfTable(tableName) + .get(RegionState.State.OPEN) + .contains(hri)); + assertFalse(regionStates.getRegionByStateOfTable(TableName.valueOf("I_am_the_phantom")) + .get(RegionState.State.OPEN) + .contains(hri)); + } finally { + TEST_UTIL.deleteTable(tableName); + } + } + @Test public void testMoveRegion() throws Exception { final TableName tableName = TableName.valueOf("testMoveRegion");