HBASE-18049 It is not necessary to re-open the region when MOB files cannot be found

This commit is contained in:
Jingcheng Du 2017-05-18 18:54:58 +08:00
parent 37dd8ff722
commit 6dc4190c07
1 changed files with 8 additions and 0 deletions

View File

@ -35,6 +35,7 @@ import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hbase.ArrayBackedTag; import org.apache.hadoop.hbase.ArrayBackedTag;
import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellComparator; import org.apache.hadoop.hbase.CellComparator;
import org.apache.hadoop.hbase.DoNotRetryIOException;
import org.apache.hadoop.hbase.HColumnDescriptor; import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HConstants; import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.KeyValue; import org.apache.hadoop.hbase.KeyValue;
@ -427,6 +428,13 @@ public class HMobStore extends HStore {
+ " or it is corrupt"); + " or it is corrupt");
if (readEmptyValueOnMobCellMiss) { if (readEmptyValueOnMobCellMiss) {
return null; return null;
} else if ((throwable instanceof FileNotFoundException)
|| (throwable.getCause() instanceof FileNotFoundException)) {
// The region is re-opened when FileNotFoundException is thrown.
// This is not necessary when MOB files cannot be found, because the store files
// in a region only contain the references to MOB files and a re-open on a region
// doesn't help fix the lost MOB files.
throw new DoNotRetryIOException(throwable);
} else if (throwable instanceof IOException) { } else if (throwable instanceof IOException) {
throw (IOException) throwable; throw (IOException) throwable;
} else { } else {