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

HDFS-4944. Merging change r1498055 from trunk to branch-2.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-2@1498057 13f79535-47bb-0310-9956-ffa450edef68
Chris Nauroth 12 роки тому
батько
коміт
c141d292c3

+ 3 - 0
hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt

@@ -428,6 +428,9 @@ Release 2.1.0-beta - 2013-07-02
     HDFS-4927. CreateEditsLog creates inodes with an invalid inode ID, which then
     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
 
     HDFS-4353. Encapsulate connections to peers in Peer and PeerServer classes.

+ 29 - 0
hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/web/TestWebHdfsFileSystemContract.java

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