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 B17D299D8 for ; Tue, 11 Oct 2011 17:45:12 +0000 (UTC) Received: (qmail 22742 invoked by uid 500); 11 Oct 2011 17:45:11 -0000 Delivered-To: apmail-hbase-commits-archive@hbase.apache.org Received: (qmail 22712 invoked by uid 500); 11 Oct 2011 17:45:11 -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 22676 invoked by uid 99); 11 Oct 2011 17:45:11 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 11 Oct 2011 17:45:11 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 11 Oct 2011 17:45:10 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 6EF7C2388C6D for ; Tue, 11 Oct 2011 17:44:50 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1181969 - /hbase/branches/0.89/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegionCloseRetry.java Date: Tue, 11 Oct 2011 17:44:50 -0000 To: commits@hbase.apache.org From: nspiegelberg@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20111011174450.6EF7C2388C6D@eris.apache.org> Author: nspiegelberg Date: Tue Oct 11 17:44:49 2011 New Revision: 1181969 URL: http://svn.apache.org/viewvc?rev=1181969&view=rev Log: Fix TestCloseRegionRetry unit test. Summary: This unit test used HBaseTestingUtility.createMultiRegions which used to cause issues since it would create regions in .meta without the regions actually being served by any region server. Also, added a configuration option which speeds the execution of this unit test. Now it takes just over 1 min. Test Plan: 1) Run the unit test 100 times. Reviewers: kannan, liyintang Reviewed By: kannan CC: hbase@lists, , pritam, kannan Differential Revision: 313072 Task ID: 677331 Modified: hbase/branches/0.89/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegionCloseRetry.java Modified: hbase/branches/0.89/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegionCloseRetry.java URL: http://svn.apache.org/viewvc/hbase/branches/0.89/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegionCloseRetry.java?rev=1181969&r1=1181968&r2=1181969&view=diff ============================================================================== --- hbase/branches/0.89/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegionCloseRetry.java (original) +++ hbase/branches/0.89/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegionCloseRetry.java Tue Oct 11 17:44:49 2011 @@ -6,12 +6,16 @@ package org.apache.hadoop.hbase.regionse import java.io.File; import java.io.IOException; import java.util.Iterator; +import java.util.List; import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.hdfs.server.datanode.DataNode; +import org.apache.hadoop.hdfs.server.namenode.FSNamesystem; import org.apache.hadoop.fs.FileSystem; +import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HBaseTestingUtility; import org.apache.hadoop.hbase.HRegionInfo; import org.apache.hadoop.hbase.HServerAddress; @@ -39,12 +43,16 @@ import org.junit.Test; */ public class TestHRegionCloseRetry { final Log LOG = LogFactory.getLog(getClass()); - private final static HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility(); + private static final Configuration conf = HBaseConfiguration.create(); + private static HBaseTestingUtility TEST_UTIL = null; private static byte[][] FAMILIES = { Bytes.toBytes("f1"), Bytes.toBytes("f2"), Bytes.toBytes("f3"), Bytes.toBytes("f4") }; @BeforeClass public static void setUpBeforeClass() throws Exception { + // Helps the unit test to exit quicker. + conf.setInt("dfs.client.block.recovery.retries", 0); + TEST_UTIL = new HBaseTestingUtility(conf); TEST_UTIL.startMiniCluster(3); } @@ -58,22 +66,33 @@ public class TestHRegionCloseRetry { // Build some data. byte[] tableName = Bytes.toBytes("testCloseHRegionRetry"); - TEST_UTIL.createTable(tableName, FAMILIES); - HTable table = new HTable(tableName); + HTable table = TEST_UTIL.createTable(tableName, FAMILIES); for (int i = 0; i < FAMILIES.length; i++) { byte[] columnFamily = FAMILIES[i]; - TEST_UTIL.createMultiRegions(table, columnFamily); TEST_UTIL.loadTable(table, columnFamily); } // Pick a regionserver. + HRegionServer server = null; + HRegionInfo regionInfo = null; Configuration conf = TEST_UTIL.getConfiguration(); - HRegionServer server = TEST_UTIL.getHBaseCluster().getRegionServer(0); + for (int i = 0; i < 3; i++) { + server = TEST_UTIL.getHBaseCluster().getRegionServer(i); + + // Some initialiation relevant to zk. + HRegion[] region = server.getOnlineRegionsAsArray(); + for (int j = 0; j < region.length; j++) { + if (!region[j].getRegionInfo().isRootRegion() + && !region[j].getRegionInfo().isMetaRegion()) { + regionInfo = region[j].getRegionInfo(); + break; + } + } + if (regionInfo != null) + break; + } + assertNotNull(regionInfo); - // Some initializtion relevant to zk. - HRegion[] region = server.getOnlineRegionsAsArray(); - assertTrue(region.length != 0); - HRegionInfo regionInfo = region[0].getRegionInfo(); ZooKeeperWrapper zkWrapper = ZooKeeperWrapper.getInstance(conf, server .getHServerInfo().getServerName()); String regionZNode = zkWrapper.getZNode( @@ -82,16 +101,13 @@ public class TestHRegionCloseRetry { // Ensure region is online before closing. assertNotNull(server.getOnlineRegion(regionInfo.getRegionName())); - TEST_UTIL.getDFSCluster().shutdownDataNodes(); + TEST_UTIL.getDFSCluster().shutdownNameNode(); try { server.closeRegion(regionInfo, true); } catch (IOException e) { LOG.warn(e); - TEST_UTIL.getDFSCluster().startDataNodes(conf, 3, true, null, null); - TEST_UTIL.getDFSCluster().waitClusterUp(); - LOG.info("New DFS Cluster up"); - // Close region should fail since filesystem wad down. The region should - // be in the state "CLOSING" + TEST_UTIL.getDFSCluster().restartNameNode(); + Stat stat = new Stat(); assertTrue(zkWrapper.exists(regionZNode, false)); byte[] data = zkWrapper.readZNode(regionZNode, stat); @@ -109,6 +125,7 @@ public class TestHRegionCloseRetry { // Verify region is closed. assertNull(server.getOnlineRegion(regionInfo.getRegionName())); assertEquals(HBaseEventType.RS2ZK_REGION_CLOSED, rsData.getHbEvent()); + LOG.info("Test completed successfully"); return; } fail("Close of region did not fail, even though filesystem was down");