You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by li...@apache.org on 2014/04/25 20:18:39 UTC

svn commit: r1590091 - in /hbase/branches/0.89-fb/src: main/java/org/apache/hadoop/hbase/client/ main/java/org/apache/hadoop/hbase/master/ test/java/org/apache/hadoop/hbase/ test/java/org/apache/hadoop/hbase/master/ test/java/org/apache/hadoop/hbase/re...

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);
   }