You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by jm...@apache.org on 2012/08/30 00:57:10 UTC
svn commit: r1378762 -
/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/util/hbck/HFileCorruptionChecker.java
Author: jmhsieh
Date: Wed Aug 29 22:57:10 2012
New Revision: 1378762
URL: http://svn.apache.org/viewvc?rev=1378762&view=rev
Log:
HBASE-6686 HFile Quarantine fails with missing dirs in hadoop 2.0
Modified:
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/util/hbck/HFileCorruptionChecker.java
Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/util/hbck/HFileCorruptionChecker.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/util/hbck/HFileCorruptionChecker.java?rev=1378762&r1=1378761&r2=1378762&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/util/hbck/HFileCorruptionChecker.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/util/hbck/HFileCorruptionChecker.java Wed Aug 29 22:57:10 2012
@@ -152,9 +152,19 @@ public class HFileCorruptionChecker {
* @throws IOException
*/
protected void checkColFamDir(Path cfDir) throws IOException {
- FileStatus[] hfs = fs.listStatus(cfDir, new HFileFilter(fs)); // use same filter as scanner.
+ FileStatus[] hfs = null;
+ try {
+ hfs = fs.listStatus(cfDir, new HFileFilter(fs)); // use same filter as scanner.
+ } catch (FileNotFoundException fnfe) {
+ // Hadoop 0.23+ listStatus semantics throws an exception if the path does not exist.
+ LOG.warn("Colfam Directory " + cfDir +
+ " does not exist. Likely due to concurrent split/compaction. Skipping.");
+ missing.add(cfDir);
+ return;
+ }
+
+ // Hadoop 1.0 listStatus does not throw an exception if the path does not exist.
if (hfs.length == 0 && !fs.exists(cfDir)) {
- // interestingly, listStatus does not throw an exception if the path does not exist.
LOG.warn("Colfam Directory " + cfDir +
" does not exist. Likely due to concurrent split/compaction. Skipping.");
missing.add(cfDir);
@@ -174,9 +184,19 @@ public class HFileCorruptionChecker {
* @throws IOException
*/
protected void checkRegionDir(Path regionDir) throws IOException {
- FileStatus[] cfs = fs.listStatus(regionDir, new FamilyDirFilter(fs));
+ FileStatus[] cfs = null;
+ try {
+ cfs = fs.listStatus(regionDir, new FamilyDirFilter(fs));
+ } catch (FileNotFoundException fnfe) {
+ // Hadoop 0.23+ listStatus semantics throws an exception if the path does not exist.
+ LOG.warn("Region Directory " + regionDir +
+ " does not exist. Likely due to concurrent split/compaction. Skipping.");
+ missing.add(regionDir);
+ return;
+ }
+
+ // Hadoop 1.0 listStatus does not throw an exception if the path does not exist.
if (cfs.length == 0 && !fs.exists(regionDir)) {
- // interestingly, listStatus does not throw an exception if the path does not exist.
LOG.warn("Region Directory " + regionDir +
" does not exist. Likely due to concurrent split/compaction. Skipping.");
missing.add(regionDir);