You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-commits@hadoop.apache.org by to...@apache.org on 2011/06/01 23:58:21 UTC
svn commit: r1130318 - in /hadoop/hdfs/trunk: CHANGES.txt
src/java/org/apache/hadoop/hdfs/server/namenode/NameNode.java
src/test/hdfs/org/apache/hadoop/hdfs/server/namenode/TestAllowFormat.java
Author: todd
Date: Wed Jun 1 21:58:21 2011
New Revision: 1130318
URL: http://svn.apache.org/viewvc?rev=1130318&view=rev
Log:
HDFS-1636. If dfs.name.dir points to an empty dir, namenode format shouldn't require confirmation. Contributed by Harsh J Chouraria.
Modified:
hadoop/hdfs/trunk/CHANGES.txt
hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/NameNode.java
hadoop/hdfs/trunk/src/test/hdfs/org/apache/hadoop/hdfs/server/namenode/TestAllowFormat.java
Modified: hadoop/hdfs/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hdfs/trunk/CHANGES.txt?rev=1130318&r1=1130317&r2=1130318&view=diff
==============================================================================
--- hadoop/hdfs/trunk/CHANGES.txt (original)
+++ hadoop/hdfs/trunk/CHANGES.txt Wed Jun 1 21:58:21 2011
@@ -465,6 +465,9 @@ Trunk (unreleased changes)
HDFS-1727. fsck command should display command usage if user passes any
illegal argument. (Sravan Kumar via todd)
+ HDFS-1636. If dfs.name.dir points to an empty dir, namenode format
+ shouldn't require confirmation. (Harsh J Chouraria via todd)
+
OPTIMIZATIONS
HDFS-1458. Improve checkpoint performance by avoiding unnecessary image
Modified: hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/NameNode.java
URL: http://svn.apache.org/viewvc/hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/NameNode.java?rev=1130318&r1=1130317&r2=1130318&view=diff
==============================================================================
--- hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/NameNode.java (original)
+++ hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/NameNode.java Wed Jun 1 21:58:21 2011
@@ -36,6 +36,7 @@ import org.apache.hadoop.fs.CommonConfig
import org.apache.hadoop.fs.ContentSummary;
import org.apache.hadoop.fs.CreateFlag;
import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.fs.FileUtil;
import org.apache.hadoop.fs.FsServerDefaults;
import org.apache.hadoop.fs.Options;
import org.apache.hadoop.fs.Path;
@@ -1483,7 +1484,10 @@ public class NameNode implements Namenod
FSNamesystem.getNamespaceEditsDirs(conf);
for(Iterator<URI> it = dirsToFormat.iterator(); it.hasNext();) {
File curDir = new File(it.next().getPath());
- if (!curDir.exists())
+ // Its alright for a dir not to exist, or to exist (properly accessible)
+ // and be completely empty.
+ if (!curDir.exists() ||
+ (curDir.isDirectory() && FileUtil.listFiles(curDir).length == 0))
continue;
if (isConfirmationNeeded) {
if (!confirmPrompt("Re-format filesystem in " + curDir + " ?")) {
Modified: hadoop/hdfs/trunk/src/test/hdfs/org/apache/hadoop/hdfs/server/namenode/TestAllowFormat.java
URL: http://svn.apache.org/viewvc/hadoop/hdfs/trunk/src/test/hdfs/org/apache/hadoop/hdfs/server/namenode/TestAllowFormat.java?rev=1130318&r1=1130317&r2=1130318&view=diff
==============================================================================
--- hadoop/hdfs/trunk/src/test/hdfs/org/apache/hadoop/hdfs/server/namenode/TestAllowFormat.java (original)
+++ hadoop/hdfs/trunk/src/test/hdfs/org/apache/hadoop/hdfs/server/namenode/TestAllowFormat.java Wed Jun 1 21:58:21 2011
@@ -62,8 +62,20 @@ public class TestAllowFormat {
throw new IOException("Could not delete hdfs directory '" + hdfsDir +
"'");
}
+
+ // Test has multiple name directories.
+ // Format should not really prompt us if one of the directories exist,
+ // but is empty. So in case the test hangs on an input, it means something
+ // could be wrong in the format prompting code. (HDFS-1636)
LOG.info("hdfsdir is " + hdfsDir.getAbsolutePath());
- config.set(DFS_NAMENODE_NAME_DIR_KEY, new File(hdfsDir, "name").getPath());
+ File nameDir1 = new File(hdfsDir, "name1");
+ File nameDir2 = new File(hdfsDir, "name2");
+
+ // To test multiple directory handling, we pre-create one of the name directories.
+ nameDir1.mkdirs();
+
+ // Set multiple name directories.
+ config.set(DFS_NAMENODE_NAME_DIR_KEY, nameDir1.getPath() + "," + nameDir2.getPath());
config.set(DFS_DATANODE_DATA_DIR_KEY, new File(hdfsDir, "data").getPath());
config.set(DFS_NAMENODE_CHECKPOINT_DIR_KEY,new File(hdfsDir, "secondary").getPath());