diff --git a/hbase0.98/hbase-common-0.98/src/main/java/com/kakao/hbase/specific/CommandAdapter.java b/hbase0.98/hbase-common-0.98/src/main/java/com/kakao/hbase/specific/CommandAdapter.java index 4065020..fe86708 100644 --- a/hbase0.98/hbase-common-0.98/src/main/java/com/kakao/hbase/specific/CommandAdapter.java +++ b/hbase0.98/hbase-common-0.98/src/main/java/com/kakao/hbase/specific/CommandAdapter.java @@ -212,6 +212,8 @@ public static boolean mergeRegions(Args args, HBaseAdmin admin, HRegionInfo regionA, HRegionInfo regionB) throws IOException { long timestamp = System.currentTimeMillis(); + assert regionA.getTable().equals(regionB.getTable()); + if (HRegionInfo.areAdjacent(regionA, regionB)) { admin.mergeRegions(regionA.getEncodedNameAsBytes(), regionB.getEncodedNameAsBytes(), false); Util.printVerboseMessage(args, "CommandAdapter.mergeRegions", timestamp); @@ -299,4 +301,4 @@ public static Map> versionedRegionMap(HBaseAdmin adm public static ServerName create(String serverNameStr) { return ServerName.valueOf(serverNameStr); } -} \ No newline at end of file +} diff --git a/hbase0.98/hbase-manager-0.98/src/test/java/com/kakao/hbase/manager/command/MergeEmptyFastTest2.java b/hbase0.98/hbase-manager-0.98/src/test/java/com/kakao/hbase/manager/command/MergeEmptyFastTest2.java index 851ac01..79bc61b 100644 --- a/hbase0.98/hbase-manager-0.98/src/test/java/com/kakao/hbase/manager/command/MergeEmptyFastTest2.java +++ b/hbase0.98/hbase-manager-0.98/src/test/java/com/kakao/hbase/manager/command/MergeEmptyFastTest2.java @@ -17,6 +17,7 @@ package com.kakao.hbase.manager.command; import com.kakao.hbase.ManagerArgs; +import com.kakao.hbase.TestBase; import com.kakao.hbase.common.Args; import com.kakao.hbase.common.Constant; import org.apache.hadoop.hbase.HRegionInfo; @@ -88,4 +89,32 @@ public void testMergeEmptyFast6() throws Exception { regionInfoList = getRegionInfoList(tableName); assertEquals(1, regionInfoList.size()); } + + @Test + public void testMergeMultipleTables() throws Exception { + makeTestData7(); + + String tableName2 = TestBase.tableName + "2"; + String tableName3 = TestBase.tableName + "3"; + + List regionInfoList; + + // merge + String[] argsParam = {"zookeeper", ".*", "empty-FAST", "--force-proceed" + , "--test", "--verbose", "--debug", "--max-iteration", "2"}; + Args args = new ManagerArgs(argsParam); + Merge command = new Merge(admin, args); + command.run(); + + // check + Thread.sleep(Constant.SMALL_WAIT_INTERVAL_MS); + regionInfoList = getRegionInfoList(tableName); + assertEquals(1, regionInfoList.size()); + + regionInfoList = getRegionInfoList(tableName2); + assertEquals(1, regionInfoList.size()); + + regionInfoList = getRegionInfoList(tableName3); + assertEquals(1, regionInfoList.size()); + } } diff --git a/hbase0.98/hbase-manager-0.98/src/test/java/com/kakao/hbase/manager/command/MergeEmptyTest2.java b/hbase0.98/hbase-manager-0.98/src/test/java/com/kakao/hbase/manager/command/MergeEmptyTest2.java index 35c057d..89bae74 100644 --- a/hbase0.98/hbase-manager-0.98/src/test/java/com/kakao/hbase/manager/command/MergeEmptyTest2.java +++ b/hbase0.98/hbase-manager-0.98/src/test/java/com/kakao/hbase/manager/command/MergeEmptyTest2.java @@ -17,6 +17,7 @@ package com.kakao.hbase.manager.command; import com.kakao.hbase.ManagerArgs; +import com.kakao.hbase.TestBase; import com.kakao.hbase.common.Args; import com.kakao.hbase.common.Constant; import org.apache.hadoop.hbase.HRegionInfo; @@ -93,4 +94,32 @@ public void testMergeEmpty6() throws Exception { regionInfoList = getRegionInfoList(tableName); assertEquals(1, regionInfoList.size()); } + + @Test + public void testMergeMultipleTables() throws Exception { + makeTestData7(); + + String tableName2 = TestBase.tableName + "2"; + String tableName3 = TestBase.tableName + "3"; + + List regionInfoList; + + // merge + String[] argsParam = {"zookeeper", ".*", "empty", "--force-proceed" + , "--test", "--verbose", "--debug", "--max-iteration", "2"}; + Args args = new ManagerArgs(argsParam); + Merge command = new Merge(admin, args); + command.run(); + + // check + Thread.sleep(Constant.SMALL_WAIT_INTERVAL_MS); + regionInfoList = getRegionInfoList(tableName); + assertEquals(1, regionInfoList.size()); + + regionInfoList = getRegionInfoList(tableName2); + assertEquals(1, regionInfoList.size()); + + regionInfoList = getRegionInfoList(tableName3); + assertEquals(1, regionInfoList.size()); + } } diff --git a/hbase0.98/hbase-manager-0.98/src/test/java/com/kakao/hbase/manager/command/MergeTestBase.java b/hbase0.98/hbase-manager-0.98/src/test/java/com/kakao/hbase/manager/command/MergeTestBase.java index 80fb3c9..b6700e2 100644 --- a/hbase0.98/hbase-manager-0.98/src/test/java/com/kakao/hbase/manager/command/MergeTestBase.java +++ b/hbase0.98/hbase-manager-0.98/src/test/java/com/kakao/hbase/manager/command/MergeTestBase.java @@ -122,4 +122,28 @@ protected void makeTestData6() throws Exception { regionInfoList = getRegionInfoList(tableName); assertEquals(11, regionInfoList.size()); } + + protected void makeTestData7() throws Exception { + List regionInfoList; + + // create tables + String tableName2 = createAdditionalTable(TestBase.tableName + "2"); + String tableName3 = createAdditionalTable(TestBase.tableName + "3"); + + // split tables + splitTable(tableName, "a".getBytes()); + splitTable(tableName, "b".getBytes()); + regionInfoList = getRegionInfoList(tableName); + assertEquals(3, regionInfoList.size()); + + splitTable(tableName2, "a".getBytes()); + splitTable(tableName2, "b".getBytes()); + regionInfoList = getRegionInfoList(tableName2); + assertEquals(3, regionInfoList.size()); + + splitTable(tableName3, "a".getBytes()); + splitTable(tableName3, "b".getBytes()); + regionInfoList = getRegionInfoList(tableName3); + assertEquals(3, regionInfoList.size()); + } } diff --git a/hbase0.98/hbase-table-stat-0.98/src/main/java/com/kakao/hbase/stat/load/TableInfo.java b/hbase0.98/hbase-table-stat-0.98/src/main/java/com/kakao/hbase/stat/load/TableInfo.java index 3dc15d7..7e679ba 100644 --- a/hbase0.98/hbase-table-stat-0.98/src/main/java/com/kakao/hbase/stat/load/TableInfo.java +++ b/hbase0.98/hbase-table-stat-0.98/src/main/java/com/kakao/hbase/stat/load/TableInfo.java @@ -114,8 +114,13 @@ private void initializeRegionServerMap() throws Exception { regionServerMap = CommandAdapter.regionServerMap(args, admin.getConfiguration() , admin.getConnection(), false); } else { - regionServerMap = CommandAdapter.regionServerMap(args, admin.getConfiguration() - , admin.getConnection(), tables, false); + if (isMultiTable()) { + regionServerMap = CommandAdapter.regionServerMap(args, admin.getConfiguration(), + admin.getConnection(), tables, false); + } else { + regionServerMap = CommandAdapter.regionServerMap(args, admin.getConfiguration(), + admin.getConnection(), new TreeSet<>(Collections.singletonList(tableName)), false); + } } clean(regionServerMap);