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