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:17 UTC
svn commit: r1378764 - in /hbase/branches/0.92: CHANGES.txt
src/main/java/org/apache/hadoop/hbase/util/hbck/HFileCorruptionChecker.java
Author: jmhsieh
Date: Wed Aug 29 22:57:17 2012
New Revision: 1378764
URL: http://svn.apache.org/viewvc?rev=1378764&view=rev
Log:
HBASE-6686 HFile Quarantine fails with missing dirs in hadoop 2.0
Modified:
hbase/branches/0.92/CHANGES.txt
hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/util/hbck/HFileCorruptionChecker.java
Modified: hbase/branches/0.92/CHANGES.txt
URL: http://svn.apache.org/viewvc/hbase/branches/0.92/CHANGES.txt?rev=1378764&r1=1378763&r2=1378764&view=diff
==============================================================================
--- hbase/branches/0.92/CHANGES.txt (original)
+++ hbase/branches/0.92/CHANGES.txt Wed Aug 29 22:57:17 2012
@@ -103,6 +103,7 @@ Release 0.92.2 - Unreleased
HBASE-6552 TestAcidGuarantees system test should flush more aggresively (Gregory Chanan)
HBASE-6512 Incorrect OfflineMetaRepair log class name (Liang Xie)
HBASE-6565 Coprocessor exec result Map is not thread safe (Yuan Kang)
+ HBASE-6686 HFile Quarantine fails with missing dirs in hadoop 2.0
IMPROVEMENTS
HBASE-5592 Make it easier to get a table from shell (Ben West)
Modified: hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/util/hbck/HFileCorruptionChecker.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/util/hbck/HFileCorruptionChecker.java?rev=1378764&r1=1378763&r2=1378764&view=diff
==============================================================================
--- hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/util/hbck/HFileCorruptionChecker.java (original)
+++ hbase/branches/0.92/src/main/java/org/apache/hadoop/hbase/util/hbck/HFileCorruptionChecker.java Wed Aug 29 22:57:17 2012
@@ -149,9 +149,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);
@@ -171,9 +181,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);