HDFS-4944. WebHDFS cannot create a file path containing characters that must be URI-encoded, such as space. Contributed by Chris Nauroth.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1498055 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Chris Nauroth 2013-06-30 03:38:09 +00:00
parent 8eb3be63f5
commit 750442812c
2 changed files with 32 additions and 0 deletions

View File

@ -631,6 +631,9 @@ Release 2.1.0-beta - 2013-07-02
HDFS-4927. CreateEditsLog creates inodes with an invalid inode ID, which then HDFS-4927. CreateEditsLog creates inodes with an invalid inode ID, which then
cannot be loaded by a namenode. (cnauroth) cannot be loaded by a namenode. (cnauroth)
HDFS-4944. WebHDFS cannot create a file path containing characters that must
be URI-encoded, such as space. (cnauroth)
BREAKDOWN OF HDFS-347 SUBTASKS AND RELATED JIRAS BREAKDOWN OF HDFS-347 SUBTASKS AND RELATED JIRAS
HDFS-4353. Encapsulate connections to peers in Peer and PeerServer classes. HDFS-4353. Encapsulate connections to peers in Peer and PeerServer classes.

View File

@ -404,5 +404,34 @@ public class TestWebHdfsFileSystemContract extends FileSystemContractBaseTest {
} }
conn.disconnect(); 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();
}
}
} }
} }