You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by te...@apache.org on 2013/05/21 20:16:06 UTC

svn commit: r1484897 - /hbase/branches/0.95/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestDistributedLogSplitting.java

Author: tedyu
Date: Tue May 21 18:16:05 2013
New Revision: 1484897

URL: http://svn.apache.org/r1484897
Log:
HBASE-8575 TestDistributedLogSplitting#testMarkRegionsRecoveringInZK fails intermittently due to lack of online region (Jeff Zhong)


Modified:
    hbase/branches/0.95/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestDistributedLogSplitting.java

Modified: hbase/branches/0.95/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestDistributedLogSplitting.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.95/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestDistributedLogSplitting.java?rev=1484897&r1=1484896&r2=1484897&view=diff
==============================================================================
--- hbase/branches/0.95/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestDistributedLogSplitting.java (original)
+++ hbase/branches/0.95/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestDistributedLogSplitting.java Tue May 21 18:16:05 2013
@@ -60,6 +60,7 @@ import org.apache.hadoop.hbase.HTableDes
 import org.apache.hadoop.hbase.KeyValue;
 import org.apache.hadoop.hbase.LargeTests;
 import org.apache.hadoop.hbase.MiniHBaseCluster;
+import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.SplitLogCounters;
 import org.apache.hadoop.hbase.Waiter;
 import org.apache.hadoop.hbase.client.Delete;
@@ -607,13 +608,24 @@ public class TestDistributedLogSplitting
     HTable ht = installTable(zkw, "table", "family", 40);
     final SplitLogManager slm = master.getMasterFileSystem().splitLogManager;
 
-    final HRegionServer hrs = rsts.get(0).getRegionServer();
-    List<HRegionInfo> regions = ProtobufUtil.getOnlineRegions(hrs);
-    HRegionInfo region = regions.get(0);
     Set<HRegionInfo> regionSet = new HashSet<HRegionInfo>();
-    regionSet.add(region);
-    slm.markRegionsRecoveringInZK(rsts.get(0).getRegionServer().getServerName(), regionSet);
-    slm.markRegionsRecoveringInZK(rsts.get(1).getRegionServer().getServerName(), regionSet);
+    HRegionInfo region = null;
+    HRegionServer hrs = null;
+    ServerName firstFailedServer = null;
+    ServerName secondFailedServer = null;
+    for (int i = 0; i < NUM_RS; i++) {
+      hrs = rsts.get(i).getRegionServer();
+      List<HRegionInfo> regions = ProtobufUtil.getOnlineRegions(hrs);
+      if (regions.isEmpty()) continue;
+      region = regions.get(0);
+      regionSet.add(region);
+      firstFailedServer = hrs.getServerName();
+      secondFailedServer = rsts.get((i + 1) % NUM_RS).getRegionServer().getServerName();
+      break;
+    }
+
+    slm.markRegionsRecoveringInZK(firstFailedServer, regionSet);
+    slm.markRegionsRecoveringInZK(secondFailedServer, regionSet);
 
     List<String> recoveringRegions = ZKUtil.listChildrenNoWatch(zkw,
       ZKUtil.joinZNode(zkw.recoveringRegionsZNode, region.getEncodedName()));
@@ -621,10 +633,11 @@ public class TestDistributedLogSplitting
     assertEquals(recoveringRegions.size(), 2);
 
     // wait for splitLogWorker to mark them up because there is no WAL files recorded in ZK
+    final HRegionServer tmphrs = hrs;
     TEST_UTIL.waitFor(60000, 1000, new Waiter.Predicate<Exception>() {
       @Override
       public boolean evaluate() throws Exception {
-        return (hrs.getRecoveringRegions().size() == 0);
+        return (tmphrs.getRecoveringRegions().size() == 0);
       }
     });
     ht.close();