Author: liyin Date: Fri Apr 25 18:18:39 2014 New Revision: 1590091 URL: http://svn.apache.org/r1590091 Log: [master] make TestLogSplitOnMasterFailover more stable
Author: daviddeng Summary: useAssignmentPlan Increase the timeout Test Plan: `TestLogSplitOnMasterFailover` Reviewers: manukranthk, liyintang, gauravm Reviewed By: manukranthk CC: hbase-eng@ Differential Revision: https://phabricator.fb.com/D1292513 Task ID: 3376780 Modified: hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/master/BaseScanner.java hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/master/HMaster.java hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/master/MultiMasterTest.java hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/master/TestLogSplitOnMasterFailover.java hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/regionserver/TestGetRegionLocation.java Modified: hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java?rev=1590091&r1=1590090&r2=1590091&view=diff ============================================================================== --- hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java (original) +++ hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java Fri Apr 25 18:18:39 2014 @@ -301,25 +301,25 @@ public class HBaseAdmin { } }; MetaScanner.metaScan(conf, visitor, new StringBytes(desc.getName())); - if (actualRegCount.get() != numRegs) { - if (tries == numRetries - 1) { - throw new RegionOfflineException("Only " + actualRegCount.get() + - " of " + numRegs + " regions are online; retries exhausted."); - } - try { // Sleep - Thread.sleep(getPauseTime(tries)); - } catch (InterruptedException e) { - throw new InterruptedIOException("Interrupted when opening" + - " regions; " + actualRegCount.get() + " of " + numRegs + - " regions processed so far"); - } - if (actualRegCount.get() > prevRegCount) { // Making progress - prevRegCount = actualRegCount.get(); - tries = -1; - } - } else { + if (actualRegCount.get() == numRegs) { return; } + + if (tries == numRetries - 1) { + throw new RegionOfflineException("Only " + actualRegCount.get() + + " of " + numRegs + " regions are online; retries exhausted."); + } + try { // Sleep + Thread.sleep(getPauseTime(tries)); + } catch (InterruptedException e) { + throw new InterruptedIOException("Interrupted when opening" + + " regions; " + actualRegCount.get() + " of " + numRegs + + " regions processed so far"); + } + if (actualRegCount.get() > prevRegCount) { // Making progress + prevRegCount = actualRegCount.get(); + tries = -1; + } } } Modified: hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/master/BaseScanner.java URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/master/BaseScanner.java?rev=1590091&r1=1590090&r2=1590091&view=diff ============================================================================== --- hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/master/BaseScanner.java (original) +++ hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/master/BaseScanner.java Fri Apr 25 18:18:39 2014 @@ -55,7 +55,7 @@ import org.apache.hadoop.ipc.RemoteExcep /** - * Base HRegion scanner class. Holds utilty common to <code>ROOT</code> and + * Base HRegion scanner class. Holds utility common to <code>ROOT</code> and * <code>META</code> HRegion scanners. * * <p>How do we know if all regions are assigned? After the initial scan of Modified: hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/master/HMaster.java URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/master/HMaster.java?rev=1590091&r1=1590090&r2=1590091&view=diff ============================================================================== --- hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/master/HMaster.java (original) +++ hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/master/HMaster.java Fri Apr 25 18:18:39 2014 @@ -33,12 +33,10 @@ import java.net.UnknownHostException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.NavigableMap; -import java.util.Random; import java.util.Set; import java.util.SortedMap; import java.util.concurrent.ConcurrentSkipListMap; @@ -1141,9 +1139,7 @@ public class HMaster extends HasThread i public void splitDeadServerLog(final String serverName) throws IOException { // Maintain the number of dead server split log requests for testing. numDeadServerLogSplitRequests.incrementAndGet(); - List<String> serverNames = new ArrayList<String>(); - serverNames.add(serverName); - splitLog(serverNames); + splitLog(Collections.singletonList(serverName)); } public void splitLog(final List<String> serverNames) throws IOException { @@ -1551,9 +1547,9 @@ public class HMaster extends HasThread i throw new TableExistsException(tableName); } if (assignmentPlan == null) { - LOG.info("Generated the assignment plan for new table " + tableName); - } else { LOG.info("NO assignment plan for new table " + tableName); + } else { + LOG.info("Generated the assignment plan for new table " + tableName); } for(HRegionInfo newRegion : newRegions) { Modified: hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java?rev=1590091&r1=1590090&r2=1590091&view=diff ============================================================================== --- hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java (original) +++ hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java Fri Apr 25 18:18:39 2014 @@ -1965,4 +1965,12 @@ REGION_LOOP: return count; } } + + /** + * Sets the configuration to use AssignmentLoadBalancer. + */ + public void useAssignmentLoadBalancer() { + this.conf.set(HConstants.LOAD_BALANCER_IMPL, + "org.apache.hadoop.hbase.master.RegionManager$AssignmentLoadBalancer"); + } } Modified: hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/master/MultiMasterTest.java URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/master/MultiMasterTest.java?rev=1590091&r1=1590090&r2=1590091&view=diff ============================================================================== --- hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/master/MultiMasterTest.java (original) +++ hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/master/MultiMasterTest.java Fri Apr 25 18:18:39 2014 @@ -19,7 +19,10 @@ */ package org.apache.hadoop.hbase.master; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; import java.io.IOException; import java.util.List; @@ -35,14 +38,14 @@ import org.apache.hadoop.hbase.LocalHBas import org.apache.hadoop.hbase.MiniHBaseCluster; import org.apache.hadoop.hbase.regionserver.HRegion; import org.apache.hadoop.hbase.regionserver.HRegionServer; -import org.apache.hadoop.hbase.util.Threads; import org.apache.hadoop.hbase.util.JVMClusterUtil.RegionServerThread; +import org.apache.hadoop.hbase.util.Threads; import org.apache.hadoop.hbase.zookeeper.ZooKeeperWrapper; import org.junit.After; /** * A base class for unit tests that require multiple masters, e.g. master - * failover tests. + * failover tests. */ public class MultiMasterTest { private static final Log LOG = LogFactory.getLog(MultiMasterTest.class); @@ -84,7 +87,7 @@ public class MultiMasterTest { activeIndex = i; } } - assertEquals("Expected to find exactly one active master " + numActive, + assertEquals("Expected to find exactly one active master", 1, numActive); assertTrue(activeIndex != -1); return activeIndex; Modified: hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/master/TestLogSplitOnMasterFailover.java URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/master/TestLogSplitOnMasterFailover.java?rev=1590091&r1=1590090&r2=1590091&view=diff ============================================================================== --- hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/master/TestLogSplitOnMasterFailover.java (original) +++ hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/master/TestLogSplitOnMasterFailover.java Fri Apr 25 18:18:39 2014 @@ -239,7 +239,7 @@ public class TestLogSplitOnMasterFailove } } - @Test(timeout=180000) + @Test(timeout = 300000) public void testWithRegularLogSplitting() throws Exception { ZooKeeperWrapper.setNamespaceForTesting(); conf.setBoolean(HConstants.DISTRIBUTED_LOG_SPLITTING_KEY, false); @@ -249,7 +249,7 @@ public class TestLogSplitOnMasterFailove // Marked as unstable and recored in 3376780 @TestTag({ "unstable" }) - @Test(timeout=180000) + @Test(timeout = 300000) public void testWithDistributedLogSplitting() throws Exception { ZooKeeperWrapper.setNamespaceForTesting(); conf.setBoolean(HConstants.DISTRIBUTED_LOG_SPLITTING_KEY, true); @@ -258,7 +258,7 @@ public class TestLogSplitOnMasterFailove // Marked as unstable and recored in 3376780 @TestTag({ "unstable" }) - @Test(timeout=280000) + @Test(timeout = 300000) public void testWithDistributedLogSplittingAndErrors() throws Exception { // add a split log worker to handle InjectionEvent.SPLITLOGWORKER_SPLIT_LOG_START. ZooKeeperWrapper.setNamespaceForTesting(); @@ -286,6 +286,7 @@ public class TestLogSplitOnMasterFailove private void runTest() throws Exception { + testUtil.useAssignmentLoadBalancer(); startMiniCluster(NUM_MASTERS, NUM_RS); Thread.currentThread().setName(getClass().getSimpleName()); ensureMastersAreUp(NUM_MASTERS); Modified: hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/regionserver/TestGetRegionLocation.java URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/regionserver/TestGetRegionLocation.java?rev=1590091&r1=1590090&r2=1590091&view=diff ============================================================================== --- hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/regionserver/TestGetRegionLocation.java (original) +++ hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/regionserver/TestGetRegionLocation.java Fri Apr 25 18:18:39 2014 @@ -32,7 +32,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseTestingUtility; -import org.apache.hadoop.hbase.HConstants; import org.apache.hadoop.hbase.HRegionInfo; import org.apache.hadoop.hbase.HRegionLocation; import org.apache.hadoop.hbase.HServerInfo; @@ -58,8 +57,7 @@ public class TestGetRegionLocation { @Before public void setUp() throws IOException, InterruptedException { // Use assignment plan so that regions are not moved unexpectedly. - TEST_UTIL.getConfiguration().set(HConstants.LOAD_BALANCER_IMPL, - "org.apache.hadoop.hbase.master.RegionManager$AssignmentLoadBalancer"); + TEST_UTIL.useAssignmentLoadBalancer(); TEST_UTIL.startMiniCluster(NUM_SLAVES); TEST_UTIL.createTable(TABLE, FAMILIES, 1, START_KEY, END_KEY, NUM_REGIONS); }