hadoop-common-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From vinayakum...@apache.org
Subject [2/4] hadoop git commit: HDFS-10474. hftp copy fails when file name with Chinese+special char in branch-2 (Contributed by Brahma Reddy Battula)
Date Mon, 20 Jun 2016 07:18:46 GMT
HDFS-10474. hftp copy fails when file name with Chinese+special char in branch-2 (Contributed
by Brahma Reddy Battula)

(cherry picked from commit 3f27f405039926bbee4b36a60d6cecdb6322fff5)


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/9d27530c
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/9d27530c
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/9d27530c

Branch: refs/heads/branch-2.8
Commit: 9d27530c36c61da5e9ead617a23f43f1b0f7e4ac
Parents: 55658dc
Author: Brahma Reddy Battula <brahma@apache.org>
Authored: Mon Jun 20 12:38:18 2016 +0530
Committer: Brahma Reddy Battula <brahma@apache.org>
Committed: Mon Jun 20 12:40:11 2016 +0530

----------------------------------------------------------------------
 .../java/org/apache/hadoop/util/ServletUtil.java     | 15 +++++++++++++++
 .../org/apache/hadoop/hdfs/web/HftpFileSystem.java   |  6 ++++--
 .../hdfs/server/namenode/ListPathsServlet.java       |  2 +-
 .../apache/hadoop/hdfs/web/TestHftpFileSystem.java   |  2 +-
 4 files changed, 21 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/9d27530c/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/ServletUtil.java
----------------------------------------------------------------------
diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/ServletUtil.java
b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/ServletUtil.java
index 3e3955b..4b12a2d 100644
--- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/ServletUtil.java
+++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/ServletUtil.java
@@ -115,6 +115,21 @@ public class ServletUtil {
   }
 
   /**
+   * Decode a string regarded as the path component of an URI.
+   *
+   * @param path the path component to decode
+   * @return decoded path, null if UTF-8 is not supported
+   * @throws URISyntaxException
+   */
+  public static String decodePath(final String path) {
+    try {
+      return new URI(path).getPath();
+    } catch (URISyntaxException e) {
+      throw new AssertionError("Failed to decode URI: " + path);
+    }
+  }
+
+  /**
    * Parse and decode the path component from the given request.
    * @param request Http request to parse
    * @param servletName the name of servlet that precedes the path

http://git-wip-us.apache.org/repos/asf/hadoop/blob/9d27530c/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/HftpFileSystem.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/HftpFileSystem.java
b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/HftpFileSystem.java
index cafe3cb..63b7931 100644
--- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/HftpFileSystem.java
+++ b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/web/HftpFileSystem.java
@@ -442,12 +442,14 @@ public class HftpFileSystem extends FileSystem
               modif, atime, FsPermission.valueOf(attrs.getValue("permission")),
               attrs.getValue("owner"), attrs.getValue("group"),
               HftpFileSystem.this.makeQualified(
-                  new Path(getUri().toString(), attrs.getValue("path"))))
+                  new Path(getUri().toString(), ServletUtil.decodePath(
+                      attrs.getValue("path")))))
         : new FileStatus(0L, true, 0, 0L,
               modif, atime, FsPermission.valueOf(attrs.getValue("permission")),
               attrs.getValue("owner"), attrs.getValue("group"),
               HftpFileSystem.this.makeQualified(
-                  new Path(getUri().toString(), attrs.getValue("path"))));
+                  new Path(getUri().toString(), ServletUtil.decodePath(
+                      attrs.getValue("path")))));
       fslist.add(fs);
     }
 

http://git-wip-us.apache.org/repos/asf/hadoop/blob/9d27530c/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ListPathsServlet.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ListPathsServlet.java
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ListPathsServlet.java
index fcf25f5..f6ac6ca 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ListPathsServlet.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ListPathsServlet.java
@@ -69,7 +69,7 @@ public class ListPathsServlet extends DfsServlet {
       final XMLOutputter doc) throws IOException {
     final SimpleDateFormat ldf = df.get();
     doc.startTag(i.isDir() ? "directory" : "file");
-    doc.attribute("path", fullpath.toUri().getPath());
+    doc.attribute("path", ServletUtil.encodePath(fullpath.toUri().getPath()));
     doc.attribute("modified", ldf.format(new Date(i.getModificationTime())));
     doc.attribute("accesstime", ldf.format(new Date(i.getAccessTime())));
     if (!i.isDir()) {

http://git-wip-us.apache.org/repos/asf/hadoop/blob/9d27530c/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/web/TestHftpFileSystem.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/web/TestHftpFileSystem.java
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/web/TestHftpFileSystem.java
index 09bc9b3..245e721 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/web/TestHftpFileSystem.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/web/TestHftpFileSystem.java
@@ -83,7 +83,7 @@ public class TestHftpFileSystem {
 
       // URI percent encodes, Request#getPathInfo decodes
       new Path("/foo bar/foo bar"), new Path("/foo?bar/foo?bar"),
-      new Path("/foo\">bar/foo\">bar"), };
+      new Path("/foo\">bar/foo\">bar"), new Path("/节节高@2X.png"), };
 
   @BeforeClass
   public static void setUp() throws Exception {


---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org


Mime
View raw message