You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by zj...@apache.org on 2015/02/18 22:19:32 UTC
[34/50] [abbrv] hadoop git commit: HDFS-6662. WebHDFS cannot open a
file if its path contains "%". Contributed by Gerson Carlos.
HDFS-6662. WebHDFS cannot open a file if its path contains "%". Contributed by Gerson Carlos.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/043e44bc
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/043e44bc
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/043e44bc
Branch: refs/heads/YARN-2928
Commit: 043e44bc36fc7f7c59406d3722b0a93607b6fa49
Parents: 00b8095
Author: Haohui Mai <wh...@apache.org>
Authored: Tue Feb 17 13:04:38 2015 -0800
Committer: Haohui Mai <wh...@apache.org>
Committed: Tue Feb 17 13:04:38 2015 -0800
----------------------------------------------------------------------
hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 3 +++
.../server/datanode/web/webhdfs/ParameterParser.java | 2 +-
.../hadoop-hdfs/src/main/webapps/hdfs/explorer.js | 7 +++++++
.../datanode/web/webhdfs/TestParameterParser.java | 13 +++++++++++++
4 files changed, 24 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/043e44bc/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
index 48eb61c..391005c 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
+++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
@@ -970,6 +970,9 @@ Release 2.7.0 - UNRELEASED
HDFS-7798. Checkpointing failure caused by shared KerberosAuthenticator.
(Chengbing Liu via yliu)
+ HDFS-6662. WebHDFS cannot open a file if its path contains "%".
+ (Gerson Carlos via wheat9)
+
BREAKDOWN OF HDFS-7584 SUBTASKS AND RELATED JIRAS
HDFS-7720. Quota by Storage Type API, tools and ClientNameNode
http://git-wip-us.apache.org/repos/asf/hadoop/blob/043e44bc/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/web/webhdfs/ParameterParser.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/web/webhdfs/ParameterParser.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/web/webhdfs/ParameterParser.java
index e1930b0..5749504 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/web/webhdfs/ParameterParser.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/web/webhdfs/ParameterParser.java
@@ -50,7 +50,7 @@ class ParameterParser {
private final Map<String, List<String>> params;
ParameterParser(QueryStringDecoder decoder, Configuration conf) {
- this.path = decoder.path().substring(WEBHDFS_PREFIX_LENGTH);
+ this.path = QueryStringDecoder.decodeComponent(decoder.path().substring(WEBHDFS_PREFIX_LENGTH));
this.params = decoder.parameters();
this.conf = conf;
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/043e44bc/hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/hdfs/explorer.js
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/hdfs/explorer.js b/hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/hdfs/explorer.js
index ca73506..87d47fa 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/hdfs/explorer.js
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/webapps/hdfs/explorer.js
@@ -102,6 +102,13 @@
menus.change();
}
+ function encode_path(abs_path) {
+ abs_path = encodeURIComponent(abs_path);
+ var re = /%2F/g;
+ return abs_path.replace(re, '/');
+ }
+
+ abs_path = encode_path(abs_path);
var url = '/webhdfs/v1' + abs_path + '?op=GET_BLOCK_LOCATIONS';
$.get(url).done(function(data) {
var d = get_response(data, "LocatedBlocks");
http://git-wip-us.apache.org/repos/asf/hadoop/blob/043e44bc/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/web/webhdfs/TestParameterParser.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/web/webhdfs/TestParameterParser.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/web/webhdfs/TestParameterParser.java
index 8b4235b..6a6c5d0 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/web/webhdfs/TestParameterParser.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/web/webhdfs/TestParameterParser.java
@@ -52,4 +52,17 @@ public class TestParameterParser {
final Token<DelegationTokenIdentifier> tok2 = testParser.delegationToken();
Assert.assertTrue(HAUtil.isTokenForLogicalUri(tok2));
}
+
+ @Test
+ public void testDecodePath() {
+ final String SCAPED_PATH = "hdfs-6662/test%25251%26%3Dtest?op=OPEN";
+ final String EXPECTED_PATH = "/hdfs-6662/test%251&=test";
+
+ Configuration conf = DFSTestUtil.newHAConfiguration(LOGICAL_NAME);
+ QueryStringDecoder decoder = new QueryStringDecoder(
+ WebHdfsHandler.WEBHDFS_PREFIX + "/"
+ + SCAPED_PATH);
+ ParameterParser testParser = new ParameterParser(decoder, conf);
+ Assert.assertEquals(EXPECTED_PATH, testParser.path());
+ }
}