You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2012/09/12 08:24:42 UTC

svn commit: r1383797 - /hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestMasterObserver.java

Author: stack
Date: Wed Sep 12 06:24:41 2012
New Revision: 1383797

URL: http://svn.apache.org/viewvc?rev=1383797&view=rev
Log:
HBASE-6648 [0.92 UNIT TESTS] TestMasterObserver.testRegionTransitionOperations fails occasionally

Modified:
    hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestMasterObserver.java

Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestMasterObserver.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestMasterObserver.java?rev=1383797&r1=1383796&r2=1383797&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestMasterObserver.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestMasterObserver.java Wed Sep 12 06:24:41 2012
@@ -31,6 +31,8 @@ import java.util.Map;
 import java.util.NavigableMap;
 import java.util.concurrent.CountDownLatch;
 
+import junit.framework.Assert;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.conf.Configuration;
@@ -972,6 +974,8 @@ public class TestMasterObserver {
       // move half the open regions from RS 0 to RS 1
       HRegionServer rs = cluster.getRegionServer(0);
       byte[] destRS = Bytes.toBytes(cluster.getRegionServer(1).getServerName().toString());
+      //Make sure no regions are in transition now
+      waitForRITtoBeZero(master);
       List<HRegionInfo> openRegions = ProtobufUtil.getOnlineRegions(rs);
       int moveCnt = openRegions.size()/2;
       for (int i=0; i<moveCnt; i++) {
@@ -981,24 +985,28 @@ public class TestMasterObserver {
             openRegions.get(i).getEncodedNameAsBytes(), destRS));
         }
       }
-  
-      // wait for assignments to finish
-      transRegions = mgr.getRegionStates().getRegionsInTransition().values();
-      for (RegionState state : transRegions) {
-        mgr.getRegionStates().waitOnRegionToClearRegionsInTransition(state.getRegion());
-      }
-  
+      //Make sure no regions are in transition now
+      waitForRITtoBeZero(master);
       // now trigger a balance
       master.balanceSwitch(true);
       boolean balanceRun = master.balance();
       assertTrue("Coprocessor should be called on region rebalancing",
           cp.wasBalanceCalled());
-      table.close();
     } finally {
       UTIL.deleteTable(TEST_TABLE);
     }
   }
 
+  private void waitForRITtoBeZero(HMaster master) throws Exception {
+    // wait for assignments to finish
+    AssignmentManager mgr = master.getAssignmentManager();
+    Collection<RegionState> transRegions =
+      mgr.getRegionStates().getRegionsInTransition().values();
+    for (RegionState state : transRegions) {
+      mgr.getRegionStates().waitOnRegionToClearRegionsInTransition(state.getRegion());
+    }
+  }
+
   @org.junit.Rule
   public org.apache.hadoop.hbase.ResourceCheckerJUnitRule cu =
     new org.apache.hadoop.hbase.ResourceCheckerJUnitRule();