Переглянути джерело

HDFS-16338. Correct fsimage error configuration message (#3684). Contributed by guophilipse.

Reviewed-by: cxorm <lianp964@gmail.com>
Reviewed-by: tomscut <litao@bigo.sg>
Signed-off-by: Ayush Saxena <ayushsaxena@apache.org>
GuoPhilipse 3 роки тому
батько
коміт
1509ea5de2

+ 2 - 2
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSImage.java

@@ -582,12 +582,12 @@ public class FSImage implements Closeable {
 
 
     if (checkpointDirs == null || checkpointDirs.isEmpty()) {
     if (checkpointDirs == null || checkpointDirs.isEmpty()) {
       throw new IOException("Cannot import image from a checkpoint. "
       throw new IOException("Cannot import image from a checkpoint. "
-                            + "\"dfs.namenode.checkpoint.dir\" is not set." );
+                            + "\"dfs.namenode.checkpoint.dir\" is not set.");
     }
     }
     
     
     if (checkpointEditsDirs == null || checkpointEditsDirs.isEmpty()) {
     if (checkpointEditsDirs == null || checkpointEditsDirs.isEmpty()) {
       throw new IOException("Cannot import image from a checkpoint. "
       throw new IOException("Cannot import image from a checkpoint. "
-                            + "\"dfs.namenode.checkpoint.dir\" is not set." );
+                            + "\"dfs.namenode.checkpoint.edits.dir\" is not set.");
     }
     }
 
 
     FSImage realImage = target.getFSImage();
     FSImage realImage = target.getFSImage();

+ 17 - 0
hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFSImage.java

@@ -80,6 +80,7 @@ import org.apache.hadoop.hdfs.server.namenode.FSImageFormatProtobuf.SectionName;
 import org.apache.hadoop.hdfs.util.MD5FileUtils;
 import org.apache.hadoop.hdfs.util.MD5FileUtils;
 import org.apache.hadoop.test.GenericTestUtils;
 import org.apache.hadoop.test.GenericTestUtils;
 import org.apache.hadoop.test.PathUtils;
 import org.apache.hadoop.test.PathUtils;
+import org.apache.hadoop.test.LambdaTestUtils;
 import org.apache.hadoop.util.Time;
 import org.apache.hadoop.util.Time;
 import org.junit.Assert;
 import org.junit.Assert;
 import org.junit.Assume;
 import org.junit.Assume;
@@ -275,6 +276,22 @@ public class TestFSImage {
     }
     }
   }
   }
 
 
+  @Test
+  public void testImportCheckpoint() throws Exception{
+    Configuration conf = new Configuration();
+    conf.set(DFSConfigKeys.DFS_NAMENODE_CHECKPOINT_EDITS_DIR_KEY, "");
+    try(MiniDFSCluster cluster = new MiniDFSCluster.Builder(conf).build()){
+      cluster.waitActive();
+      FSNamesystem fsn = cluster.getNamesystem();
+      FSImage fsImage= new FSImage(conf);
+      LambdaTestUtils.intercept(
+          IOException.class,
+          "Cannot import image from a checkpoint. "
+                  + "\"dfs.namenode.checkpoint.edits.dir\" is not set.",
+          () -> fsImage.doImportCheckpoint(fsn));
+    }
+  }
+
   /**
   /**
    * Test if a INodeFileUnderConstruction with BlockInfoStriped can be
    * Test if a INodeFileUnderConstruction with BlockInfoStriped can be
    * saved and loaded by FSImageSerialization
    * saved and loaded by FSImageSerialization