You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ns...@apache.org on 2011/10/11 04:13:43 UTC

svn commit: r1181496 - /hbase/branches/0.89/src/test/java/org/apache/hadoop/hbase/loadtest/RegionSplitter.java

Author: nspiegelberg
Date: Tue Oct 11 02:13:43 2011
New Revision: 1181496

URL: http://svn.apache.org/viewvc?rev=1181496&view=rev
Log:
Catch NoServerForRegionException, which was causing RegionSplitter to IOE and exit prematurely

Modified:
    hbase/branches/0.89/src/test/java/org/apache/hadoop/hbase/loadtest/RegionSplitter.java

Modified: hbase/branches/0.89/src/test/java/org/apache/hadoop/hbase/loadtest/RegionSplitter.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89/src/test/java/org/apache/hadoop/hbase/loadtest/RegionSplitter.java?rev=1181496&r1=1181495&r2=1181496&view=diff
==============================================================================
--- hbase/branches/0.89/src/test/java/org/apache/hadoop/hbase/loadtest/RegionSplitter.java (original)
+++ hbase/branches/0.89/src/test/java/org/apache/hadoop/hbase/loadtest/RegionSplitter.java Tue Oct 11 02:13:43 2011
@@ -30,6 +30,7 @@ import org.apache.hadoop.hbase.HServerAd
 import org.apache.hadoop.hbase.HTableDescriptor;
 import org.apache.hadoop.hbase.client.HBaseAdmin;
 import org.apache.hadoop.hbase.client.HTable;
+import org.apache.hadoop.hbase.client.NoServerForRegionException;
 import org.apache.hadoop.hbase.regionserver.Store;
 import org.apache.hadoop.hbase.regionserver.StoreFile;
 import org.apache.hadoop.hbase.util.Bytes;
@@ -400,33 +401,42 @@ public class RegionSplitter {
 
       // when a daughter region is opened, a compaction is triggered
       // wait until compaction completes for both daughter regions
-      LinkedList<HRegionInfo> check = Lists.newLinkedList();
-      check.add(table.getRegionLocation(start).getRegionInfo());
-      check.add(table.getRegionLocation(split).getRegionInfo());
-      for (HRegionInfo hri : check.toArray(new HRegionInfo[] {})) {
-        boolean refFound = false;
-        String startKey = Bytes.toStringBinary(hri.getStartKey());
-        // check every Column Family for that region
-        for (HColumnDescriptor c : hri.getTableDesc().getFamilies()) {
-          Path cfDir = Store.getStoreHomedir(tableDir, hri.getEncodedName(), c
-              .getName());
-          if (fs.exists(cfDir)) {
-            for (FileStatus file : fs.listStatus(cfDir)) {
-              refFound |= StoreFile.isReference(file.getPath());
-              if (refFound) break;
+      try {
+        LinkedList<HRegionInfo> check = Lists.newLinkedList();
+        check.add(table.getRegionLocation(start).getRegionInfo());
+        check.add(table.getRegionLocation(split).getRegionInfo());
+        for (HRegionInfo hri : check.toArray(new HRegionInfo[] {})) {
+          boolean refFound = false;
+          String startKey = Bytes.toStringBinary(hri.getStartKey());
+          // check every Column Family for that region
+          for (HColumnDescriptor c : hri.getTableDesc().getFamilies()) {
+            Path cfDir = Store.getStoreHomedir(tableDir, hri.getEncodedName(),
+                c.getName());
+            if (fs.exists(cfDir)) {
+              for (FileStatus file : fs.listStatus(cfDir)) {
+                refFound |= StoreFile.isReference(file.getPath());
+                if (refFound)
+                  break;
+              }
             }
+            if (refFound)
+              break;
+          }
+          // compaction is completed when all reference files are gone
+          if (!refFound) {
+            check.remove(hri);
           }
-          if (refFound) break;
         }
-        // compaction is completed when all reference files are gone
-        if (!refFound) {
-          check.remove(hri);
+        if (check.isEmpty()) {
+          finished.add(region);
+        } else {
+          physicalSplitting.add(region);
         }
-      }
-      if (check.isEmpty()) {
-        finished.add(region);
-      } else {
+      } catch (NoServerForRegionException nsfre) {
+        LOG.debug("No Server Exception thrown for: "
+            + Bytes.toStringBinary(start));
         physicalSplitting.add(region);
+        table.clearRegionCache();
       }
     }