Return-Path: X-Original-To: apmail-hbase-commits-archive@www.apache.org Delivered-To: apmail-hbase-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id B575318E61 for ; Mon, 22 Feb 2016 22:20:52 +0000 (UTC) Received: (qmail 80672 invoked by uid 500); 22 Feb 2016 22:20:30 -0000 Delivered-To: apmail-hbase-commits-archive@hbase.apache.org Received: (qmail 80518 invoked by uid 500); 22 Feb 2016 22:20:30 -0000 Mailing-List: contact commits-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@hbase.apache.org Delivered-To: mailing list commits@hbase.apache.org Received: (qmail 80000 invoked by uid 99); 22 Feb 2016 22:20:30 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 22 Feb 2016 22:20:30 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id CFE7CE0492; Mon, 22 Feb 2016 22:20:29 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: syuanjiang@apache.org To: commits@hbase.apache.org Date: Mon, 22 Feb 2016 22:20:33 -0000 Message-Id: In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [05/22] hbase git commit: HBASE-15277 TestRegionMergeTransactionOnCluster.testWholesomeMerge fails with no connection to master HBASE-15277 TestRegionMergeTransactionOnCluster.testWholesomeMerge fails with no connection to master Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/a8077080 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/a8077080 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/a8077080 Branch: refs/heads/hbase-12439 Commit: a8077080bab2fd4fa6bcd33c1d4b28fca4024872 Parents: bb881eb Author: stack Authored: Tue Feb 16 13:13:13 2016 -0800 Committer: stack Committed: Tue Feb 16 13:13:13 2016 -0800 ---------------------------------------------------------------------- .../TestRegionMergeTransactionOnCluster.java | 86 ++++++++++---------- 1 file changed, 45 insertions(+), 41 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/a8077080/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.java index e3f6cc2..a532bb7 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.java @@ -34,6 +34,7 @@ import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; +import org.apache.hadoop.hbase.CategoryBasedTimeout; import org.apache.hadoop.hbase.CoordinatedStateManager; import org.apache.hadoop.hbase.HBaseTestingUtility; import org.apache.hadoop.hbase.HColumnDescriptor; @@ -74,8 +75,10 @@ import org.apache.hadoop.util.StringUtils; import org.apache.zookeeper.KeeperException; import org.junit.AfterClass; import org.junit.BeforeClass; +import org.junit.Rule; import org.junit.Test; import org.junit.experimental.categories.Category; +import org.junit.rules.TestRule; import com.google.common.base.Joiner; import com.google.protobuf.RpcController; @@ -91,6 +94,8 @@ import com.google.protobuf.ServiceException; public class TestRegionMergeTransactionOnCluster { private static final Log LOG = LogFactory .getLog(TestRegionMergeTransactionOnCluster.class); + @Rule public final TestRule timeout = CategoryBasedTimeout.builder().withTimeout(this.getClass()). + withLookingForStuckThread(true).build(); private static final int NB_SERVERS = 3; private static final byte[] FAMILYNAME = Bytes.toBytes("fam"); @@ -105,22 +110,23 @@ public class TestRegionMergeTransactionOnCluster { static final HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility(); - private static HMaster master; - private static Admin admin; + private static HMaster MASTER; + private static Admin ADMIN; @BeforeClass public static void beforeAllTests() throws Exception { // Start a cluster TEST_UTIL.startMiniCluster(1, NB_SERVERS, null, MyMaster.class, null); MiniHBaseCluster cluster = TEST_UTIL.getHBaseCluster(); - master = cluster.getMaster(); - master.balanceSwitch(false); - admin = TEST_UTIL.getHBaseAdmin(); + MASTER = cluster.getMaster(); + MASTER.balanceSwitch(false); + ADMIN = TEST_UTIL.getConnection().getAdmin(); } @AfterClass public static void afterAllTests() throws Exception { TEST_UTIL.shutdownMiniCluster(); + if (ADMIN != null) ADMIN.close(); } @Test @@ -130,14 +136,14 @@ public class TestRegionMergeTransactionOnCluster { TableName.valueOf("testWholesomeMerge"); // Create table and load data. - Table table = createTableAndLoadData(master, tableName); + Table table = createTableAndLoadData(MASTER, tableName); // Merge 1st and 2nd region - mergeRegionsAndVerifyRegionNum(master, tableName, 0, 1, + mergeRegionsAndVerifyRegionNum(MASTER, tableName, 0, 1, INITIAL_REGION_NUM - 1); // Merge 2nd and 3th region PairOfSameType mergedRegions = - mergeRegionsAndVerifyRegionNum(master, tableName, 1, 2, + mergeRegionsAndVerifyRegionNum(MASTER, tableName, 1, 2, INITIAL_REGION_NUM - 2); verifyRowCount(table, ROWSIZE); @@ -180,14 +186,13 @@ public class TestRegionMergeTransactionOnCluster { final TableName tableName = TableName.valueOf("testMergeAndRestartingMaster"); // Create table and load data. - Table table = createTableAndLoadData(master, tableName); + Table table = createTableAndLoadData(MASTER, tableName); try { MyMasterRpcServices.enabled.set(true); // Merge 1st and 2nd region - mergeRegionsAndVerifyRegionNum(master, tableName, 0, 1, - INITIAL_REGION_NUM - 1); + mergeRegionsAndVerifyRegionNum(MASTER, tableName, 0, 1, INITIAL_REGION_NUM - 1); } finally { MyMasterRpcServices.enabled.set(false); } @@ -195,29 +200,28 @@ public class TestRegionMergeTransactionOnCluster { table.close(); } - @SuppressWarnings("deprecation") @Test public void testCleanMergeReference() throws Exception { LOG.info("Starting testCleanMergeReference"); - admin.enableCatalogJanitor(false); + ADMIN.enableCatalogJanitor(false); try { final TableName tableName = TableName.valueOf("testCleanMergeReference"); // Create table and load data. - Table table = createTableAndLoadData(master, tableName); + Table table = createTableAndLoadData(MASTER, tableName); // Merge 1st and 2nd region - mergeRegionsAndVerifyRegionNum(master, tableName, 0, 1, + mergeRegionsAndVerifyRegionNum(MASTER, tableName, 0, 1, INITIAL_REGION_NUM - 1); verifyRowCount(table, ROWSIZE); table.close(); List> tableRegions = MetaTableAccessor - .getTableRegionsAndLocations(master.getConnection(), tableName); + .getTableRegionsAndLocations(MASTER.getConnection(), tableName); HRegionInfo mergedRegionInfo = tableRegions.get(0).getFirst(); - HTableDescriptor tableDescriptor = master.getTableDescriptors().get( + HTableDescriptor tableDescriptor = MASTER.getTableDescriptors().get( tableName); Result mergedRegionResult = MetaTableAccessor.getRegionResult( - master.getConnection(), mergedRegionInfo.getRegionName()); + MASTER.getConnection(), mergedRegionInfo.getRegionName()); // contains merge reference in META assertTrue(mergedRegionResult.getValue(HConstants.CATALOG_FAMILY, @@ -229,8 +233,8 @@ public class TestRegionMergeTransactionOnCluster { PairOfSameType p = MetaTableAccessor.getMergeRegions(mergedRegionResult); HRegionInfo regionA = p.getFirst(); HRegionInfo regionB = p.getSecond(); - FileSystem fs = master.getMasterFileSystem().getFileSystem(); - Path rootDir = master.getMasterFileSystem().getRootDir(); + FileSystem fs = MASTER.getMasterFileSystem().getFileSystem(); + Path rootDir = MASTER.getMasterFileSystem().getRootDir(); Path tabledir = FSUtils.getTableDir(rootDir, mergedRegionInfo.getTable()); Path regionAdir = new Path(tabledir, regionA.getEncodedName()); @@ -245,7 +249,7 @@ public class TestRegionMergeTransactionOnCluster { for(HColumnDescriptor colFamily : columnFamilies) { count += hrfs.getStoreFiles(colFamily.getName()).size(); } - admin.compactRegion(mergedRegionInfo.getRegionName()); + ADMIN.compactRegion(mergedRegionInfo.getRegionName()); // clean up the merged region store files // wait until merged region have reference file long timeout = System.currentTimeMillis() + waitTime; @@ -282,7 +286,7 @@ public class TestRegionMergeTransactionOnCluster { // files of merging regions int cleaned = 0; while (cleaned == 0) { - cleaned = admin.runCatalogScan(); + cleaned = ADMIN.runCatalogScan(); LOG.debug("catalog janitor returned " + cleaned); Thread.sleep(50); } @@ -291,14 +295,14 @@ public class TestRegionMergeTransactionOnCluster { assertTrue(cleaned > 0); mergedRegionResult = MetaTableAccessor.getRegionResult( - master.getConnection(), mergedRegionInfo.getRegionName()); + TEST_UTIL.getConnection(), mergedRegionInfo.getRegionName()); assertFalse(mergedRegionResult.getValue(HConstants.CATALOG_FAMILY, HConstants.MERGEA_QUALIFIER) != null); assertFalse(mergedRegionResult.getValue(HConstants.CATALOG_FAMILY, HConstants.MERGEB_QUALIFIER) != null); } finally { - admin.enableCatalogJanitor(true); + ADMIN.enableCatalogJanitor(true); } } @@ -315,8 +319,8 @@ public class TestRegionMergeTransactionOnCluster { try { // Create table and load data. - Table table = createTableAndLoadData(master, tableName); - RegionStates regionStates = master.getAssignmentManager().getRegionStates(); + Table table = createTableAndLoadData(MASTER, tableName); + RegionStates regionStates = MASTER.getAssignmentManager().getRegionStates(); List regions = regionStates.getRegionsOfTable(tableName); // Fake offline one region HRegionInfo a = regions.get(0); @@ -324,7 +328,7 @@ public class TestRegionMergeTransactionOnCluster { regionStates.regionOffline(a); try { // Merge offline region. Region a is offline here - admin.mergeRegions(a.getEncodedNameAsBytes(), b.getEncodedNameAsBytes(), false); + ADMIN.mergeRegions(a.getEncodedNameAsBytes(), b.getEncodedNameAsBytes(), false); fail("Offline regions should not be able to merge"); } catch (IOException ie) { System.out.println(ie); @@ -334,7 +338,7 @@ public class TestRegionMergeTransactionOnCluster { } try { // Merge the same region: b and b. - admin.mergeRegions(b.getEncodedNameAsBytes(), b.getEncodedNameAsBytes(), true); + ADMIN.mergeRegions(b.getEncodedNameAsBytes(), b.getEncodedNameAsBytes(), true); fail("A region should not be able to merge with itself, even forcifully"); } catch (IOException ie) { assertTrue("Exception should mention regions not online", @@ -343,7 +347,7 @@ public class TestRegionMergeTransactionOnCluster { } try { // Merge unknown regions - admin.mergeRegions(Bytes.toBytes("-f1"), Bytes.toBytes("-f2"), true); + ADMIN.mergeRegions(Bytes.toBytes("-f1"), Bytes.toBytes("-f2"), true); fail("Unknown region could not be merged"); } catch (IOException ie) { assertTrue("UnknownRegionException should be thrown", @@ -359,16 +363,16 @@ public class TestRegionMergeTransactionOnCluster { public void testMergeWithReplicas() throws Exception { final TableName tableName = TableName.valueOf("testMergeWithReplicas"); // Create table and load data. - createTableAndLoadData(master, tableName, 5, 2); + createTableAndLoadData(MASTER, tableName, 5, 2); List> initialRegionToServers = MetaTableAccessor.getTableRegionsAndLocations( - master.getConnection(), tableName); + TEST_UTIL.getConnection(), tableName); // Merge 1st and 2nd region - PairOfSameType mergedRegions = mergeRegionsAndVerifyRegionNum(master, tableName, + PairOfSameType mergedRegions = mergeRegionsAndVerifyRegionNum(MASTER, tableName, 0, 2, 5 * 2 - 2); List> currentRegionToServers = MetaTableAccessor.getTableRegionsAndLocations( - master.getConnection(), tableName); + TEST_UTIL.getConnection(), tableName); List initialRegions = new ArrayList(); for (Pair p : initialRegionToServers) { initialRegions.add(p.getFirst()); @@ -408,10 +412,10 @@ public class TestRegionMergeTransactionOnCluster { int regionAnum, int regionBnum) throws Exception { List> tableRegions = MetaTableAccessor .getTableRegionsAndLocations( - master.getConnection(), tablename); + TEST_UTIL.getConnection(), tablename); HRegionInfo regionA = tableRegions.get(regionAnum).getFirst(); HRegionInfo regionB = tableRegions.get(regionBnum).getFirst(); - TEST_UTIL.getHBaseAdmin().mergeRegions( + ADMIN.mergeRegions( regionA.getEncodedNameAsBytes(), regionB.getEncodedNameAsBytes(), false); return new PairOfSameType(regionA, regionB); @@ -424,7 +428,7 @@ public class TestRegionMergeTransactionOnCluster { long timeout = System.currentTimeMillis() + waitTime; while (System.currentTimeMillis() < timeout) { tableRegionsInMeta = MetaTableAccessor.getTableRegionsAndLocations( - master.getConnection(), tablename); + TEST_UTIL.getConnection(), tablename); tableRegionsInMaster = master.getAssignmentManager().getRegionStates() .getRegionsOfTable(tablename); if (tableRegionsInMeta.size() == expectedRegionNum @@ -435,7 +439,7 @@ public class TestRegionMergeTransactionOnCluster { } tableRegionsInMeta = MetaTableAccessor.getTableRegionsAndLocations( - master.getConnection(), tablename); + TEST_UTIL.getConnection(), tablename); LOG.info("Regions after merge:" + Joiner.on(',').join(tableRegionsInMeta)); assertEquals(expectedRegionNum, tableRegionsInMeta.size()); } @@ -455,7 +459,7 @@ public class TestRegionMergeTransactionOnCluster { Table table = TEST_UTIL.createTable(tablename, FAMILYNAME, splitRows); if (replication > 1) { - HBaseTestingUtility.setReplicas(admin, tablename, replication); + HBaseTestingUtility.setReplicas(ADMIN, tablename, replication); } loadData(table); verifyRowCount(table, ROWSIZE); @@ -465,14 +469,14 @@ public class TestRegionMergeTransactionOnCluster { List> tableRegions; while (System.currentTimeMillis() < timeout) { tableRegions = MetaTableAccessor.getTableRegionsAndLocations( - master.getConnection(), tablename); + TEST_UTIL.getConnection(), tablename); if (tableRegions.size() == numRegions * replication) break; Thread.sleep(250); } tableRegions = MetaTableAccessor.getTableRegionsAndLocations( - master.getConnection(), tablename); + TEST_UTIL.getConnection(), tablename); LOG.info("Regions after load: " + Joiner.on(',').join(tableRegions)); assertEquals(numRegions * replication, tableRegions.size()); return table; @@ -545,4 +549,4 @@ public class TestRegionMergeTransactionOnCluster { return resp; } } -} +} \ No newline at end of file