Author: cnauroth
Date: Sun Jun 30 04:00:55 2013
New Revision: 1498059
URL: http://svn.apache.org/r1498059
Log:
HDFS-4944. WebHDFS cannot create a file path containing characters that must be
URI-encoded, such as space. Contributed by Chris Nauroth.
Modified:
hadoop/common/branches/branch-1/CHANGES.txt
hadoop/common/branches/branch-1/src/hdfs/org/apache/hadoop/hdfs/server/datanode/web/resources/DatanodeWebHdfsMethods.java
hadoop/common/branches/branch-1/src/test/org/apache/hadoop/hdfs/web/TestWebHdfsFileSystemContract.java
Modified: hadoop/common/branches/branch-1/CHANGES.txt
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-1/CHANGES.txt?rev=1498059&r1=1498058&r2=1498059&view=diff
==============================================================================
--- hadoop/common/branches/branch-1/CHANGES.txt (original)
+++ hadoop/common/branches/branch-1/CHANGES.txt Sun Jun 30 04:00:55 2013
@@ -65,6 +65,9 @@ Release 1.3.0 - unreleased
HADOOP-7140. IPC Reader threads do not stop when server stops
(Todd Lipcon, backported by ivanmi)
+ HDFS-4944. WebHDFS cannot create a file path containing characters that
must
+ be URI-encoded, such as space. (cnauroth)
+
Release 1.2.1 - Unreleased
INCOMPATIBLE CHANGES
Modified:
hadoop/common/branches/branch-1/src/hdfs/org/apache/hadoop/hdfs/server/datanode/web/resources/DatanodeWebHdfsMethods.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-1/src/hdfs/org/apache/hadoop/hdfs/server/datanode/web/resources/DatanodeWebHdfsMethods.java?rev=1498059&r1=1498058&r2=1498059&view=diff
==============================================================================
---
hadoop/common/branches/branch-1/src/hdfs/org/apache/hadoop/hdfs/server/datanode/web/resources/DatanodeWebHdfsMethods.java
(original)
+++
hadoop/common/branches/branch-1/src/hdfs/org/apache/hadoop/hdfs/server/datanode/web/resources/DatanodeWebHdfsMethods.java
Sun Jun 30 04:00:55 2013
@@ -193,7 +193,8 @@ public class DatanodeWebHdfsMethods {
IOUtils.cleanup(LOG, dfsclient);
}
final String nnAddr = NameNode.getInfoServer(conf);
- final URI uri = new URI(WebHdfsFileSystem.SCHEME + "://" + nnAddr +
fullpath);
+ final URI uri = new URI(WebHdfsFileSystem.SCHEME, nnAddr, fullpath, null,
+ null);
return
Response.created(uri).type(MediaType.APPLICATION_OCTET_STREAM).build();
}
default:
Modified:
hadoop/common/branches/branch-1/src/test/org/apache/hadoop/hdfs/web/TestWebHdfsFileSystemContract.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-1/src/test/org/apache/hadoop/hdfs/web/TestWebHdfsFileSystemContract.java?rev=1498059&r1=1498058&r2=1498059&view=diff
==============================================================================
---
hadoop/common/branches/branch-1/src/test/org/apache/hadoop/hdfs/web/TestWebHdfsFileSystemContract.java
(original)
+++
hadoop/common/branches/branch-1/src/test/org/apache/hadoop/hdfs/web/TestWebHdfsFileSystemContract.java
Sun Jun 30 04:00:55 2013
@@ -380,5 +380,34 @@ public class TestWebHdfsFileSystemContra
}
conn.disconnect();
}
+
+ {//test create with path containing spaces
+ HttpOpParam.Op op = PutOpParam.Op.CREATE;
+ Path path = new Path("/test/path%20with%20spaces");
+ URL url = webhdfs.toUrl(op, path);
+ HttpURLConnection conn = (HttpURLConnection)url.openConnection();
+ conn.setRequestMethod(op.getType().toString());
+ conn.setDoOutput(false);
+ conn.setInstanceFollowRedirects(false);
+ final String redirect;
+ try {
+ conn.connect();
+ assertEquals(HttpServletResponse.SC_TEMPORARY_REDIRECT,
+ conn.getResponseCode());
+ redirect = conn.getHeaderField("Location");
+ } finally {
+ conn.disconnect();
+ }
+
+ conn = (HttpURLConnection)new URL(redirect).openConnection();
+ conn.setRequestMethod(op.getType().toString());
+ conn.setDoOutput(op.getDoOutput());
+ try {
+ conn.connect();
+ assertEquals(HttpServletResponse.SC_CREATED, conn.getResponseCode());
+ } finally {
+ conn.disconnect();
+ }
+ }
}
}