From 937ef703ebc4d08fdd772baf66a26f6c12b8dfe3 Mon Sep 17 00:00:00 2001 From: Jonathan Turner Eagles Date: Wed, 20 Feb 2013 21:00:05 +0000 Subject: [PATCH] YARN-236. RM should point tracking URL to RM web page when app fails to start (Jason Lowe via jeagles) git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-2@1448408 13f79535-47bb-0310-9956-ffa450edef68 --- hadoop-yarn-project/CHANGES.txt | 3 +++ .../server/webproxy/WebAppProxyServlet.java | 24 +++++-------------- 2 files changed, 9 insertions(+), 18 deletions(-) diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt index 78441066f2d..220fdd07b73 100644 --- a/hadoop-yarn-project/CHANGES.txt +++ b/hadoop-yarn-project/CHANGES.txt @@ -298,6 +298,9 @@ Release 0.23.7 - UNRELEASED YARN-249. Capacity Scheduler web page should show list of active users per queue like it used to (in 1.x) (Ravi Prakash via tgraves) + YARN-236. RM should point tracking URL to RM web page when app fails to + start (Jason Lowe via jeagles) + OPTIMIZATIONS YARN-357. App submission should not be synchronized (daryn) 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 ead5b57af18..86ab1ed7fc7 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 @@ -66,6 +66,7 @@ public class WebAppProxyServlet extends HttpServlet { public static final String PROXY_USER_COOKIE_NAME = "proxy-user"; private final List trackingUriPlugins; + private final String rmAppPageUrlBase; private static class _ implements Hamlet._ { //Empty @@ -91,6 +92,8 @@ public class WebAppProxyServlet extends HttpServlet { this.trackingUriPlugins = conf.getInstances(YarnConfiguration.YARN_TRACKING_URL_GENERATOR, TrackingUriPlugin.class); + this.rmAppPageUrlBase = StringHelper.pjoin( + YarnConfiguration.getRMWebAppURL(conf), "cluster", "app"); } /** @@ -291,25 +294,10 @@ public class WebAppProxyServlet extends HttpServlet { if (original != null) { trackingUri = ProxyUriUtils.getUriFromAMUrl(original); } + // fallback to ResourceManager's app page if no tracking URI provided if(original == null || original.equals("N/A")) { - String message; - switch(applicationReport.getFinalApplicationStatus()) { - case FAILED: - case KILLED: - case SUCCEEDED: - message = - "The requested application exited before setting a tracking URL."; - break; - case UNDEFINED: - message = "The requested application does not appear to be running " - +"yet, and has not set a tracking URL."; - break; - default: - //This should never happen, but just to be safe - message = "The requested application has not set a tracking URL."; - break; - } - notFound(resp, message); + resp.sendRedirect(resp.encodeRedirectURL( + StringHelper.pjoin(rmAppPageUrlBase, id.toString()))); return; }