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 19:42:02 UTC

svn commit: r1181919 - /hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLog.java

Author: nspiegelberg
Date: Tue Oct 11 17:42:02 2011
New Revision: 1181919

URL: http://svn.apache.org/viewvc?rev=1181919&view=rev
Log:
Fix FileNotFoundException in HLog.java

Summary:
When deploying HBase over Avatarnode HDFS the following diff :
D293997 breaks initialization of a region, since it throws an exception
for listStatus() if the parent directory does not exist instead of just
returning null. This results in the region never being opened.

Test Plan: Test on dev cluster.
Reviewed By: nspiegelberg
Reviewers: hkuang, nspiegelberg
CC: hbase@lists, nspiegelberg
Revert Plan:
Tags:

- begin *PUBLIC* platform impact section -
Bugzilla: #
- end platform impact -

Differential Revision: 295918

Modified:
    hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLog.java

Modified: hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLog.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLog.java?rev=1181919&r1=1181918&r2=1181919&view=diff
==============================================================================
--- hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLog.java (original)
+++ hbase/branches/0.89/src/main/java/org/apache/hadoop/hbase/regionserver/wal/HLog.java Tue Oct 11 17:42:02 2011
@@ -1783,23 +1783,26 @@ public class HLog implements Syncable {
       final Path regiondir)
   throws IOException {
     Path editsdir = getRegionDirRecoveredEditsDir(regiondir);
-    FileStatus [] files = fs.listStatus(editsdir, new PathFilter () {
-      @Override
-      public boolean accept(Path p) {
-        boolean result = false;
-        try {
-          // Return files and only files that match the editfile names pattern.
-          // There can be other files in this directory other than edit files.
-          // In particular, on error, we'll move aside the bad edit file giving
-          // it a timestamp suffix.  See moveAsideBadEditsFile.
-          Matcher m = EDITFILES_NAME_PATTERN.matcher(p.getName());
-          result = fs.isFile(p) && m.matches();
-        } catch (IOException e) {
-          LOG.warn("Failed isFile check on " + p);
+    FileStatus [] files = null;
+    if (fs.exists(editsdir)) {
+      files = fs.listStatus(editsdir, new PathFilter () {
+        @Override
+        public boolean accept(Path p) {
+          boolean result = false;
+          try {
+            // Return files and only files that match the editfile names pattern.
+            // There can be other files in this directory other than edit files.
+            // In particular, on error, we'll move aside the bad edit file giving
+            // it a timestamp suffix.  See moveAsideBadEditsFile.
+            Matcher m = EDITFILES_NAME_PATTERN.matcher(p.getName());
+            result = fs.isFile(p) && m.matches();
+          } catch (IOException e) {
+            LOG.warn("Failed isFile check on " + p);
+          }
+          return result;
         }
-        return result;
-      }
-    });
+      });
+    }
     NavigableSet<Path> filesSorted = new TreeSet<Path>();
     if (files == null) return filesSorted;
     for (FileStatus status: files) {