You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by sh...@apache.org on 2008/06/16 21:53:15 UTC

svn commit: r668278 - in /hadoop/core/branches/branch-0.18: CHANGES.txt src/hdfs/org/apache/hadoop/dfs/FSImage.java src/test/org/apache/hadoop/dfs/TestDFSStorageStateRecovery.java

Author: shv
Date: Mon Jun 16 12:53:15 2008
New Revision: 668278

URL: http://svn.apache.org/viewvc?rev=668278&view=rev
Log:
HADOOP-3363. Merge -r 668263:668264 from trunk to branch 0.18.

Modified:
    hadoop/core/branches/branch-0.18/CHANGES.txt
    hadoop/core/branches/branch-0.18/src/hdfs/org/apache/hadoop/dfs/FSImage.java
    hadoop/core/branches/branch-0.18/src/test/org/apache/hadoop/dfs/TestDFSStorageStateRecovery.java

Modified: hadoop/core/branches/branch-0.18/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/core/branches/branch-0.18/CHANGES.txt?rev=668278&r1=668277&r2=668278&view=diff
==============================================================================
--- hadoop/core/branches/branch-0.18/CHANGES.txt (original)
+++ hadoop/core/branches/branch-0.18/CHANGES.txt Mon Jun 16 12:53:15 2008
@@ -585,6 +585,8 @@
     HADOOP-3548. Fixes build.xml to copy all *.jar files to the dist.
     (Owen O'Malley via ddas)
 
+    HADOOP-3363. Fix unformatted storage detection in FSImage. (shv)
+
 Release 0.17.0 - 2008-05-18
 
   INCOMPATIBLE CHANGES

Modified: hadoop/core/branches/branch-0.18/src/hdfs/org/apache/hadoop/dfs/FSImage.java
URL: http://svn.apache.org/viewvc/hadoop/core/branches/branch-0.18/src/hdfs/org/apache/hadoop/dfs/FSImage.java?rev=668278&r1=668277&r2=668278&view=diff
==============================================================================
--- hadoop/core/branches/branch-0.18/src/hdfs/org/apache/hadoop/dfs/FSImage.java (original)
+++ hadoop/core/branches/branch-0.18/src/hdfs/org/apache/hadoop/dfs/FSImage.java Mon Jun 16 12:53:15 2008
@@ -562,9 +562,12 @@
 
   boolean isConversionNeeded(StorageDirectory sd) throws IOException {
     File oldImageDir = new File(sd.root, "image");
-    if (!oldImageDir.exists())
-      throw new InconsistentFSStateException(sd.root,
-          oldImageDir + " does not exist.");
+    if (!oldImageDir.exists()) {
+      if(sd.getVersionFile().exists())
+        throw new InconsistentFSStateException(sd.root,
+            oldImageDir + " does not exist.");
+      return false;
+    }
     // check the layout version inside the image file
     File oldF = new File(oldImageDir, "fsimage");
     RandomAccessFile oldFile = new RandomAccessFile(oldF, "rws");

Modified: hadoop/core/branches/branch-0.18/src/test/org/apache/hadoop/dfs/TestDFSStorageStateRecovery.java
URL: http://svn.apache.org/viewvc/hadoop/core/branches/branch-0.18/src/test/org/apache/hadoop/dfs/TestDFSStorageStateRecovery.java?rev=668278&r1=668277&r2=668278&view=diff
==============================================================================
--- hadoop/core/branches/branch-0.18/src/test/org/apache/hadoop/dfs/TestDFSStorageStateRecovery.java (original)
+++ hadoop/core/branches/branch-0.18/src/test/org/apache/hadoop/dfs/TestDFSStorageStateRecovery.java Mon Jun 16 12:53:15 2008
@@ -37,7 +37,7 @@
  
   private static final Log LOG = LogFactory.getLog(
                                                    "org.apache.hadoop.dfs.TestDFSStorageStateRecovery");
-  private Configuration conf;
+  private Configuration conf = null;
   private int testCounter = 0;
   private MiniDFSCluster cluster = null;
   
@@ -197,8 +197,15 @@
           try {
             cluster = new MiniDFSCluster(conf, 0, StartupOption.REGULAR);
             throw new AssertionError("NameNode should have failed to start");
-          } catch (Exception expected) {
-            // expected
+          } catch (IOException expected) {
+            // the exception is expected
+            // check that the message says "not formatted" 
+            // when storage directory is empty (case #5)
+            if(!testCases[i][0] && !testCases[i][2] 
+                      && !testCases[i][1] && !testCases[i][3]) {
+              assertTrue(expected.getLocalizedMessage().contains(
+                  "NameNode is not formatted"));
+            }
           }
         }