hadoop git commit: YARN-3239. WebAppProxy does not support a final tracking url which has query fragments and params. Contributed by Jian He (cherry picked from commit 1a68fc43464d3948418f453bb2f80df7

2015-09-01 Thread vinodkv
Repository: hadoop
Updated Branches:
  refs/heads/branch-2.6.1 406ec495b -> a4b8897b3


YARN-3239. WebAppProxy does not support a final tracking url which has query 
fragments and params. Contributed by Jian He
(cherry picked from commit 1a68fc43464d3948418f453bb2f80df7ce773097)

(cherry picked from commit 257087417e424e628f090b6b648ccb3b9c880250)
(cherry picked from commit 49468108c203bf093acdc93c1798d90c480c3a17)


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

Branch: refs/heads/branch-2.6.1
Commit: a4b8897b306103c20b97d9fbc20cc93e968620ae
Parents: 406ec49
Author: Jason Lowe 
Authored: Wed Feb 25 16:14:34 2015 +
Committer: Vinod Kumar Vavilapalli 
Committed: Tue Sep 1 13:32:21 2015 -0700

--
 hadoop-yarn-project/CHANGES.txt |  3 +++
 .../server/webproxy/WebAppProxyServlet.java | 23 ++--
 .../server/webproxy/TestWebAppProxyServlet.java | 23 +++-
 3 files changed, 41 insertions(+), 8 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hadoop/blob/a4b8897b/hadoop-yarn-project/CHANGES.txt
--
diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt
index d96a0d9..78d7093 100644
--- a/hadoop-yarn-project/CHANGES.txt
+++ b/hadoop-yarn-project/CHANGES.txt
@@ -85,6 +85,9 @@ Release 2.6.1 - UNRELEASED
 YARN-3238. Connection timeouts to nodemanagers are retried at
 multiple levels (Jason Lowe via xgong)
 
+YARN-3239. WebAppProxy does not support a final tracking url which has
+query fragments and params (Jian He via jlowe)
+
 Release 2.6.0 - 2014-11-18
 
   INCOMPATIBLE CHANGES

http://git-wip-us.apache.org/repos/asf/hadoop/blob/a4b8897b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/main/java/org/apache/hadoop/yarn/server/webproxy/WebAppProxyServlet.java
--
diff --git 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/main/java/org/apache/hadoop/yarn/server/webproxy/WebAppProxyServlet.java
 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/main/java/org/apache/hadoop/yarn/server/webproxy/WebAppProxyServlet.java
index 19ae9dc..d41374a 100644
--- 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/main/java/org/apache/hadoop/yarn/server/webproxy/WebAppProxyServlet.java
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/main/java/org/apache/hadoop/yarn/server/webproxy/WebAppProxyServlet.java
@@ -36,6 +36,7 @@ import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import javax.ws.rs.core.UriBuilder;
 
 import org.apache.commons.httpclient.Header;
 import org.apache.commons.httpclient.HostConfiguration;
@@ -58,6 +59,8 @@ import org.apache.hadoop.yarn.util.TrackingUriPlugin;
 import org.apache.hadoop.yarn.webapp.MimeType;
 import org.apache.hadoop.yarn.webapp.hamlet.Hamlet;
 import org.apache.hadoop.yarn.webapp.util.WebAppUtils;
+import org.apache.http.NameValuePair;
+import org.apache.http.client.utils.URLEncodedUtils;
 
 public class WebAppProxyServlet extends HttpServlet {
   private static final long serialVersionUID = 1L;
@@ -322,13 +325,19 @@ public class WebAppProxyServlet extends HttpServlet {
 req.getQueryString(), true), runningUser, id);
 return;
   }
-  URI toFetch = new URI(trackingUri.getScheme(), 
-  trackingUri.getAuthority(),
-  StringHelper.ujoin(trackingUri.getPath(), rest), 
req.getQueryString(),
-  null);
-  
-  LOG.info(req.getRemoteUser()+" is accessing unchecked "+toFetch+
-  " which is the app master GUI of "+appId+" owned by "+runningUser);
+
+  // Append the user-provided path and query parameter to the original
+  // tracking url.
+  List queryPairs =
+  URLEncodedUtils.parse(req.getQueryString(), null);
+  UriBuilder builder = UriBuilder.fromUri(trackingUri);
+  for (NameValuePair pair : queryPairs) {
+builder.queryParam(pair.getName(), pair.getValue());
+  }
+  URI toFetch = builder.path(rest).build();
+
+  LOG.info(remoteUser+" is accessing unchecked "+toFetch+
+" which is the app master GUI of "+appId+" owned by "+runningUser);
 
   switch(applicationReport.getYarnApplicationState()) {
   case KILLED:


hadoop git commit: YARN-3239. WebAppProxy does not support a final tracking url which has query fragments and params. Contributed by Jian He (cherry picked from commit 1a68fc43464d3948418f453bb2f80df7

2015-02-25 Thread jlowe
Repository: hadoop
Updated Branches:
  refs/heads/branch-2 75fd43be0 - 257087417


YARN-3239. WebAppProxy does not support a final tracking url which has query 
fragments and params. Contributed by Jian He
(cherry picked from commit 1a68fc43464d3948418f453bb2f80df7ce773097)


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

Branch: refs/heads/branch-2
Commit: 257087417e424e628f090b6b648ccb3b9c880250
Parents: 75fd43b
Author: Jason Lowe jl...@apache.org
Authored: Wed Feb 25 16:14:34 2015 +
Committer: Jason Lowe jl...@apache.org
Committed: Wed Feb 25 16:15:35 2015 +

--
 hadoop-yarn-project/CHANGES.txt |  3 +++
 .../server/webproxy/WebAppProxyServlet.java | 21 +-
 .../server/webproxy/TestWebAppProxyServlet.java | 23 +++-
 3 files changed, 40 insertions(+), 7 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/hadoop/blob/25708741/hadoop-yarn-project/CHANGES.txt
--
diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt
index 3124b3a..9046482 100644
--- a/hadoop-yarn-project/CHANGES.txt
+++ b/hadoop-yarn-project/CHANGES.txt
@@ -616,6 +616,9 @@ Release 2.7.0 - UNRELEASED
 YARN-3247. TestQueueMappings should use CapacityScheduler explicitly.
 (Zhihai Xu via ozawa)
 
+YARN-3239. WebAppProxy does not support a final tracking url which has
+query fragments and params (Jian He via jlowe)
+
 Release 2.6.0 - 2014-11-18
 
   INCOMPATIBLE CHANGES

http://git-wip-us.apache.org/repos/asf/hadoop/blob/25708741/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/main/java/org/apache/hadoop/yarn/server/webproxy/WebAppProxyServlet.java
--
diff --git 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/main/java/org/apache/hadoop/yarn/server/webproxy/WebAppProxyServlet.java
 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/main/java/org/apache/hadoop/yarn/server/webproxy/WebAppProxyServlet.java
index 6c0391f..47f7769 100644
--- 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/main/java/org/apache/hadoop/yarn/server/webproxy/WebAppProxyServlet.java
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/main/java/org/apache/hadoop/yarn/server/webproxy/WebAppProxyServlet.java
@@ -20,9 +20,9 @@ package org.apache.hadoop.yarn.server.webproxy;
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.ObjectInputStream;
 import java.io.OutputStream;
 import java.io.PrintWriter;
-import java.io.ObjectInputStream;
 import java.net.InetAddress;
 import java.net.URI;
 import java.net.URISyntaxException;
@@ -38,6 +38,7 @@ import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import javax.ws.rs.core.UriBuilder;
 
 import org.apache.commons.httpclient.Header;
 import org.apache.commons.httpclient.HostConfiguration;
@@ -58,6 +59,8 @@ import org.apache.hadoop.yarn.util.TrackingUriPlugin;
 import org.apache.hadoop.yarn.webapp.MimeType;
 import org.apache.hadoop.yarn.webapp.hamlet.Hamlet;
 import org.apache.hadoop.yarn.webapp.util.WebAppUtils;
+import org.apache.http.NameValuePair;
+import org.apache.http.client.utils.URLEncodedUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -325,11 +328,17 @@ public class WebAppProxyServlet extends HttpServlet {
 req.getQueryString(), true), runningUser, id);
 return;
   }
-  URI toFetch = new URI(trackingUri.getScheme(), 
-  trackingUri.getAuthority(),
-  StringHelper.ujoin(trackingUri.getPath(), rest), 
req.getQueryString(),
-  null);
-  
+
+  // Append the user-provided path and query parameter to the original
+  // tracking url.
+  ListNameValuePair queryPairs =
+  URLEncodedUtils.parse(req.getQueryString(), null);
+  UriBuilder builder = UriBuilder.fromUri(trackingUri);
+  for (NameValuePair pair : queryPairs) {
+builder.queryParam(pair.getName(), pair.getValue());
+  }
+  URI toFetch = builder.path(rest).build();
+
   LOG.info({} is accessing unchecked {}
   +  which is the app master GUI of {} owned by {},
   remoteUser, toFetch, appId, runningUser);