[
https://issues.apache.org/jira/browse/YARN-2844?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14206157#comment-14206157
]
Hadoop QA commented on YARN-2844:
---------------------------------
{color:green}+1 overall{color}. Here are the results of testing the latest
attachment
http://issues.apache.org/jira/secure/attachment/12680759/YARN-2844.patch
against trunk revision 58e9bf4.
{color:green}+1 @author{color}. The patch does not contain any @author
tags.
{color:green}+1 tests included{color}. The patch appears to include 1 new
or modified test files.
{color:green}+1 javac{color}. The applied patch does not increase the
total number of javac compiler warnings.
{color:green}+1 javadoc{color}. There were no new javadoc warning messages.
{color:green}+1 eclipse:eclipse{color}. The patch built with
eclipse:eclipse.
{color:green}+1 findbugs{color}. The patch does not introduce any new
Findbugs (version 2.0.3) warnings.
{color:green}+1 release audit{color}. The applied patch does not increase
the total number of release audit warnings.
{color:green}+1 core tests{color}. The patch passed unit tests in
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy.
{color:green}+1 contrib tests{color}. The patch passed contrib unit tests.
Test results:
https://builds.apache.org/job/PreCommit-YARN-Build/5813//testReport/
Console output: https://builds.apache.org/job/PreCommit-YARN-Build/5813//console
This message is automatically generated.
> WebAppProxyServlet cannot handle urls which contain encoded characters
> ----------------------------------------------------------------------
>
> Key: YARN-2844
> URL: https://issues.apache.org/jira/browse/YARN-2844
> Project: Hadoop YARN
> Issue Type: Bug
> Components: webapp
> Reporter: Shixiong Zhu
> Priority: Minor
> Attachments: YARN-2844.patch
>
>
> WebAppProxyServlet has a bug about the URL encode/decode. This was found when
> running Spark on Yarn.
> When a user accesses
> "http://example.com:8088/proxy/application_1415344371838_0006/executors/threadDump/?executorId=%3Cdriver%3E",
> WebAppProxyServlet will require
> "http://example.com:36429/executors/threadDump/?executorId=%25253Cdriver%25253E".
> But Spark Web Server expects
> "http://example.com:36429/executors/threadDump/?executorId=%3Cdriver%3E".
> Here are problems I found in WebAppProxyServlet.
> 1. java.net.URI.toString returns an encoded url string. So the following code
> in WebAppProxyServlet should use `true` instead of `false`.
> {code:java}
> org.apache.commons.httpclient.URI uri =
> new org.apache.commons.httpclient.URI(link.toString(), false);
> {code}
> 2.
> [HttpServletRequest.getPathInfo()|https://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html#getPathInfo()]
> will returns a decoded string. Therefore, if the link is
> http://example.com:8088/proxy/application_1415344371838_0006/John%2FHunter,
> pathInfo will be "/application_1415344371838_0006/John/Hunter". Then the URI
> created in WebAppProxyServlet will be something like ".../John/Hunter", but
> the correct link should be ".../John%2FHunber". We can use
> [HttpServletRequest.getRequestURI()|https://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html#getRequestURI()]
> to get the raw path.
> {code:java}
> final String pathInfo = req.getPathInfo();
> {code}
> 3. Use wrong URI constructor. [URI(String scheme, String authority, String
> path, String query, String
> fragment)|https://docs.oracle.com/javase/7/docs/api/java/net/URI.html#URI(java.lang.String,%20java.lang.String,%20java.lang.String,%20java.lang.String,%20java.lang.String)]
> will encode the path and query which have already been encoded. Should use
> [URI(String
> str)|https://docs.oracle.com/javase/7/docs/api/java/net/URI.html#URI(java.lang.String)]
> directly since the url has already been encoded.
> {code:java}
> URI toFetch = new URI(trackingUri.getScheme(),
> trackingUri.getAuthority(),
> StringHelper.ujoin(trackingUri.getPath(), rest),
> req.getQueryString(),
> null);
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)