[ 
https://issues.apache.org/jira/browse/HDFS-7816?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14329199#comment-14329199
 ] 

Jason Lowe commented on HDFS-7816:
----------------------------------

This appears to be broken after HDFS-7279.  What's happening is the URI is 
being properly encoded by the client but the datanode is not decoding it 
properly when it tries to act as a DFS client.

Looks like netty's QueryStringDecoder#path method, despite the javadoc stating 
it returns a decoded path, is not returning a decoded path from the URI.  It 
doesn't use a URI object to decode it, rather it just performs substrings on 
the URI string.  Even if you pass it a URI it uses the raw path, not the 
decoded path, for the URI and then returns a substring of that as the path.

As a result the datanode ends up using a non-decoded path and we have a path 
mismatch between what the client requested and what the datanode tries to open 
on their behalf.

> Unable to open webhdfs paths with escape characters
> ---------------------------------------------------
>
>                 Key: HDFS-7816
>                 URL: https://issues.apache.org/jira/browse/HDFS-7816
>             Project: Hadoop HDFS
>          Issue Type: Bug
>          Components: webhdfs
>    Affects Versions: 2.7.0
>            Reporter: Jason Lowe
>            Priority: Blocker
>
> webhdfs requests to open files with % characters in the filename fail because 
> the filename is not being decoded properly.  For example:
> $ hadoop fs -cat 'webhdfs://nn/user/somebody/abc%def'
> cat: File does not exist: /user/somebody/abc%25def



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to