diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/AppBlock.java b/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..a52422c 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/AppBlock.java +++ b/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,7 @@ import static org.apache.hadoop.yarn.webapp.view.JQueryUI._ODD; import static org.apache.hadoop.yarn.webapp.view.JQueryUI._TH; +import java.io.IOException; import java.util.Collection; import org.apache.hadoop.http.HttpConfig; @@ -32,6 +33,7 @@ import org.apache.hadoop.util.StringUtils; import org.apache.hadoop.yarn.api.records.ApplicationAccessType; import org.apache.hadoop.yarn.api.records.ApplicationId; +import org.apache.hadoop.yarn.api.records.FinalApplicationStatus; import org.apache.hadoop.yarn.api.records.QueueACL; import org.apache.hadoop.yarn.server.resourcemanager.RMContext; import org.apache.hadoop.yarn.server.resourcemanager.ResourceManager; @@ -87,6 +89,18 @@ protected void render(Block html) { return; } AppInfo app = new AppInfo(rmApp, true); + final String thisUrl = request().getRequestURL().toString(); + final String trackingUrlPretty = app.getTrackingUrlPretty(); + + // if there is an app-specific url, redirect to it right away + // + if (app.isTrackingUrlReady() && !trackingUrlPretty.equals(thisUrl)) { + try { + response().sendRedirect(trackingUrlPretty); + } catch (IOException e) { + LOG.warn("Redirect to history failed", e); + } + } // Check for the authorization. String remoteUser = request().getRemoteUser(); @@ -116,7 +130,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();