diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/AppBlock.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/AppBlock.java index ed147fb..3410c9c 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/AppBlock.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/AppBlock.java @@ -25,6 +25,9 @@ import static org.apache.hadoop.yarn.webapp.view.JQueryUI._ODD; import static org.apache.hadoop.yarn.webapp.view.JQueryUI._TH; +import static java.lang.Boolean.TRUE; + +import java.io.IOException; import java.util.Collection; import org.apache.hadoop.http.HttpConfig; @@ -88,6 +91,20 @@ protected void render(Block html) { } AppInfo app = new AppInfo(rmApp, true); + // if there is an app-specific url, redirect to it right away + // + final String thisUrl = request().getRequestURL().toString(); + final String trackingUrlPretty = app.getTrackingUrlPretty(); + if ( $("redirect", TRUE.toString()).equals(TRUE.toString()) + && app.isTrackingUrlReady() + && !trackingUrlPretty.equals(thisUrl)) { + try { + response().sendRedirect(trackingUrlPretty); + } catch (IOException e) { + LOG.warn(trackingUrlPretty + ": Redirect failed!", e); + } + } + // Check for the authorization. String remoteUser = request().getRemoteUser(); UserGroupInformation callerUGI = null; @@ -116,7 +133,7 @@ protected void render(Block html) { _("Elapsed:", StringUtils.formatTime( Times.elapsed(app.getStartTime(), app.getFinishTime()))). _("Tracking URL:", !app.isTrackingUrlReady() ? - "#" : app.getTrackingUrlPretty(), app.getTrackingUI()). + "#" : trackingUrlPretty, app.getTrackingUI()). _("Diagnostics:", app.getNote()); Collection attempts = rmApp.getAppAttempts().values(); diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/AppsBlock.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/AppsBlock.java index cec95ac..7893e88 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/AppsBlock.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/AppsBlock.java @@ -63,7 +63,7 @@ th(".state", "State"). th(".finalstatus", "FinalStatus"). th(".progress", "Progress"). - th(".ui", "Tracking UI")._()._(). + th(".ui", "Application Overview")._()._(). tbody(); Collection reqAppStates = null; String reqStateString = $(APP_STATE); @@ -80,10 +80,12 @@ continue; } AppInfo appInfo = new AppInfo(app, true); + String trackingURL = + !appInfo.isTrackingUrlReady()? "#" : appInfo.getTrackingUrlPretty(); String percent = String.format("%.1f", appInfo.getProgress()); //AppID numerical value parsed by parseHadoopID in yarn.dt.plugins.js appsTableData.append("[\"") + .append(trackingURL).append("'>") .append(appInfo.getAppId()).append("\",\"") .append(StringEscapeUtils.escapeJavaScript(StringEscapeUtils.escapeHtml( appInfo.getUser()))).append("\",\"") @@ -103,13 +105,9 @@ .append(join(percent, '%')).append("'> ").append("
") - .append("\",\"") - .append(appInfo.getTrackingUI()).append("\"],\n"); + .append("\",\"").append("RM app").append("\"],\n"); } if(appsTableData.charAt(appsTableData.length() - 2) == ',') {