Author: shv
Date: Thu May 21 23:43:38 2009
New Revision: 777321
URL: http://svn.apache.org/viewvc?rev=777321&view=rev
Log:
HADOOP-5687. NameNode throws NPE if fs.default.name is the default value.
Contributed by Philip Zeyliger.
Modified:
hadoop/core/trunk/CHANGES.txt
hadoop/core/trunk/src/core/org/apache/hadoop/fs/FileSystem.java
hadoop/core/trunk/src/core/org/apache/hadoop/net/NetUtils.java
hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/DistributedFileSystem.java
hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/protocol/FSConstants.java
hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/namenode/NameNode.java
hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/namenode/SecondaryNameNode.java
Modified: hadoop/core/trunk/CHANGES.txt
URL:
http://svn.apache.org/viewvc/hadoop/core/trunk/CHANGES.txt?rev=777321&r1=777320&r2=777321&view=diff
==============================================================================
--- hadoop/core/trunk/CHANGES.txt (original)
+++ hadoop/core/trunk/CHANGES.txt Thu May 21 23:43:38 2009
@@ -653,6 +653,9 @@
HADOOP-5782. Revert a few formatting changes introduced in HADOOP-5015.
(Suresh Srinivas via rangadi)
+ HADOOP-5687. NameNode throws NPE if fs.default.name is the default value.
+ (Philip Zeyliger via shv)
+
Release 0.20.1 - Unreleased
INCOMPATIBLE CHANGES
Modified: hadoop/core/trunk/src/core/org/apache/hadoop/fs/FileSystem.java
URL:
http://svn.apache.org/viewvc/hadoop/core/trunk/src/core/org/apache/hadoop/fs/FileSystem.java?rev=777321&r1=777320&r2=777321&view=diff
==============================================================================
--- hadoop/core/trunk/src/core/org/apache/hadoop/fs/FileSystem.java (original)
+++ hadoop/core/trunk/src/core/org/apache/hadoop/fs/FileSystem.java Thu May 21
23:43:38 2009
@@ -66,7 +66,7 @@
* implementation is DistributedFileSystem.
*****************************************************************/
public abstract class FileSystem extends Configured implements Closeable {
- private static final String FS_DEFAULT_NAME_KEY = "fs.default.name";
+ public static final String FS_DEFAULT_NAME_KEY = "fs.default.name";
public static final Log LOG = LogFactory.getLog(FileSystem.class);
Modified: hadoop/core/trunk/src/core/org/apache/hadoop/net/NetUtils.java
URL:
http://svn.apache.org/viewvc/hadoop/core/trunk/src/core/org/apache/hadoop/net/NetUtils.java?rev=777321&r1=777320&r2=777321&view=diff
==============================================================================
--- hadoop/core/trunk/src/core/org/apache/hadoop/net/NetUtils.java (original)
+++ hadoop/core/trunk/src/core/org/apache/hadoop/net/NetUtils.java Thu May 21
23:43:38 2009
@@ -132,6 +132,9 @@
*/
public static InetSocketAddress createSocketAddr(String target,
int defaultPort) {
+ if (target == null) {
+ throw new IllegalArgumentException("Target address cannot be null.");
+ }
int colonIndex = target.indexOf(':');
if (colonIndex < 0 && defaultPort == -1) {
throw new RuntimeException("Not a host:port pair: " + target);
Modified:
hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/DistributedFileSystem.java
URL:
http://svn.apache.org/viewvc/hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/DistributedFileSystem.java?rev=777321&r1=777320&r2=777321&view=diff
==============================================================================
---
hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/DistributedFileSystem.java
(original)
+++
hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/DistributedFileSystem.java
Thu May 21 23:43:38 2009
@@ -80,7 +80,7 @@
InetSocketAddress namenode = NameNode.getAddress(uri.getAuthority());
this.dfs = new DFSClient(namenode, conf, statistics);
- this.uri = URI.create("hdfs://" + uri.getAuthority());
+ this.uri = URI.create(FSConstants.HDFS_URI_SCHEME + "://" +
uri.getAuthority());
this.workingDir = getHomeDirectory();
}
Modified:
hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/protocol/FSConstants.java
URL:
http://svn.apache.org/viewvc/hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/protocol/FSConstants.java?rev=777321&r1=777320&r2=777321&view=diff
==============================================================================
--- hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/protocol/FSConstants.java
(original)
+++ hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/protocol/FSConstants.java
Thu May 21 23:43:38 2009
@@ -76,6 +76,11 @@
FORCE_PROCEED;
}
+ /**
+ * URI Scheme for hdfs://namenode/ URIs.
+ */
+ public static final String HDFS_URI_SCHEME = "hdfs";
+
// Version is reflected in the dfs image and edit log files.
// Version is reflected in the data storage file.
// Versions are negative.
Modified:
hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/namenode/NameNode.java
URL:
http://svn.apache.org/viewvc/hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/namenode/NameNode.java?rev=777321&r1=777320&r2=777321&view=diff
==============================================================================
---
hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/namenode/NameNode.java
(original)
+++
hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/namenode/NameNode.java
Thu May 21 23:43:38 2009
@@ -189,13 +189,28 @@
}
public static InetSocketAddress getAddress(Configuration conf) {
- return getAddress(FileSystem.getDefaultUri(conf).getAuthority());
+ URI filesystemURI = FileSystem.getDefaultUri(conf);
+ String authority = filesystemURI.getAuthority();
+ if (authority == null) {
+ throw new IllegalArgumentException(String.format(
+ "Invalid URI for NameNode address (check %s): %s has no authority.",
+ FileSystem.FS_DEFAULT_NAME_KEY, filesystemURI.toString()));
+ }
+ if (!FSConstants.HDFS_URI_SCHEME.equalsIgnoreCase(
+ filesystemURI.getScheme())) {
+ throw new IllegalArgumentException(String.format(
+ "Invalid URI for NameNode address (check %s): %s is not of scheme
'%s'.",
+ FileSystem.FS_DEFAULT_NAME_KEY, filesystemURI.toString(),
+ FSConstants.HDFS_URI_SCHEME));
+ }
+ return getAddress(authority);
}
public static URI getUri(InetSocketAddress namenode) {
int port = namenode.getPort();
String portString = port == DEFAULT_PORT ? "" : (":"+port);
- return URI.create("hdfs://"+ namenode.getHostName()+portString);
+ return URI.create(FSConstants.HDFS_URI_SCHEME + "://"
+ + namenode.getHostName()+portString);
}
/**
Modified:
hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/namenode/SecondaryNameNode.java
URL:
http://svn.apache.org/viewvc/hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/namenode/SecondaryNameNode.java?rev=777321&r1=777320&r2=777321&view=diff
==============================================================================
---
hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/namenode/SecondaryNameNode.java
(original)
+++
hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/namenode/SecondaryNameNode.java
Thu May 21 23:43:38 2009
@@ -32,6 +32,7 @@
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.hdfs.DFSUtil.ErrorSimulator;
+import org.apache.hadoop.hdfs.protocol.FSConstants;
import org.apache.hadoop.hdfs.server.common.HdfsConstants;
import org.apache.hadoop.hdfs.server.common.InconsistentFSStateException;
import org.apache.hadoop.hdfs.server.namenode.FSImage.NameNodeDirType;
@@ -276,7 +277,7 @@
*/
private String getInfoServer() throws IOException {
URI fsName = FileSystem.getDefaultUri(conf);
- if (!"hdfs".equals(fsName.getScheme())) {
+ if (!FSConstants.HDFS_URI_SCHEME.equalsIgnoreCase(fsName.getScheme())) {
throw new IOException("This is not a DFS");
}
return conf.get("dfs.http.address", "0.0.0.0:50070");