From 40d222e862063dc6c474cc6e8de0dce6c4395012 Mon Sep 17 00:00:00 2001 From: Varun Vasudev Date: Thu, 3 Sep 2015 23:58:26 +0530 Subject: [PATCH] YARN-4103. RM WebServices missing scheme for appattempts logLinks. Contributed by Jonathan Eagles. --- hadoop-yarn-project/CHANGES.txt | 3 +++ .../yarn/server/resourcemanager/webapp/RMAppBlock.java | 3 ++- .../server/resourcemanager/webapp/RMWebServices.java | 7 ++++--- .../resourcemanager/webapp/dao/AppAttemptInfo.java | 10 +++++----- .../resourcemanager/webapp/TestRMWebServicesApps.java | 2 +- 5 files changed, 15 insertions(+), 10 deletions(-) diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt index 4e9b4111243..29eabb5427d 100644 --- a/hadoop-yarn-project/CHANGES.txt +++ b/hadoop-yarn-project/CHANGES.txt @@ -877,6 +877,9 @@ Release 2.7.2 - UNRELEASED YARN-4101. RM should print alert messages if Zookeeper and Resourcemanager gets connection issue. (Xuan Gong via jianhe) + YARN-4103. RM WebServices missing scheme for appattempts logLinks. + (Jonathan Eagles via vvasudeb) + Release 2.7.1 - 2015-07-06 INCOMPATIBLE CHANGES 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/RMAppBlock.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMAppBlock.java index 38e0e3bf72e..eec1fadd815 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMAppBlock.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMAppBlock.java @@ -130,7 +130,8 @@ protected void generateApplicationTable(Block html, continue; } AppAttemptInfo attemptInfo = - new AppAttemptInfo(this.rm, rmAppAttempt, rmApp.getUser()); + new AppAttemptInfo(this.rm, rmAppAttempt, rmApp.getUser(), + WebAppUtils.getHttpSchemePrefix(conf)); String blacklistedNodesCount = "N/A"; Set nodes = RMAppAttemptBlock.getBlacklistedNodes(rm, 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/RMWebServices.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java index 8e11e2a2652..24100533fa9 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java @@ -696,7 +696,8 @@ public AppInfo getApp(@Context HttpServletRequest hsr, @GET @Path("/apps/{appid}/appattempts") @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) - public AppAttemptsInfo getAppAttempts(@PathParam("appid") String appId) { + public AppAttemptsInfo getAppAttempts(@Context HttpServletRequest hsr, + @PathParam("appid") String appId) { init(); if (appId == null || appId.isEmpty()) { @@ -714,8 +715,8 @@ public AppAttemptsInfo getAppAttempts(@PathParam("appid") String appId) { AppAttemptsInfo appAttemptsInfo = new AppAttemptsInfo(); for (RMAppAttempt attempt : app.getAppAttempts().values()) { - AppAttemptInfo attemptInfo = - new AppAttemptInfo(rm, attempt, app.getUser()); + AppAttemptInfo attemptInfo = new AppAttemptInfo(rm, attempt, + app.getUser(), hsr.getScheme() + "://"); appAttemptsInfo.add(attemptInfo); } 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/dao/AppAttemptInfo.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/AppAttemptInfo.java index 2c7bbd037bf..b6e95a6bb35 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/AppAttemptInfo.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/dao/AppAttemptInfo.java @@ -27,7 +27,6 @@ import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttempt; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.AbstractYarnScheduler; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerApplicationAttempt; -import org.apache.hadoop.yarn.server.resourcemanager.webapp.RMAppAttemptBlock; import org.apache.hadoop.yarn.util.ConverterUtils; import org.apache.hadoop.yarn.webapp.util.WebAppUtils; @@ -46,7 +45,8 @@ public class AppAttemptInfo { public AppAttemptInfo() { } - public AppAttemptInfo(ResourceManager rm, RMAppAttempt attempt, String user) { + public AppAttemptInfo(ResourceManager rm, RMAppAttempt attempt, String user, + String schemePrefix) { this.startTime = 0; this.containerId = ""; this.nodeHttpAddress = ""; @@ -61,9 +61,9 @@ public AppAttemptInfo(ResourceManager rm, RMAppAttempt attempt, String user) { this.containerId = masterContainer.getId().toString(); this.nodeHttpAddress = masterContainer.getNodeHttpAddress(); this.nodeId = masterContainer.getNodeId().toString(); - this.logsLink = - WebAppUtils.getRunningLogURL("//" + masterContainer.getNodeHttpAddress(), - ConverterUtils.toString(masterContainer.getId()), user); + this.logsLink = WebAppUtils.getRunningLogURL(schemePrefix + + masterContainer.getNodeHttpAddress(), + ConverterUtils.toString(masterContainer.getId()), user); if (rm.getResourceScheduler() instanceof AbstractYarnScheduler) { AbstractYarnScheduler ayScheduler = (AbstractYarnScheduler) rm.getResourceScheduler(); diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesApps.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesApps.java index 919bb1ab577..a784295c5b4 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesApps.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/TestRMWebServicesApps.java @@ -1635,7 +1635,7 @@ public void verifyAppAttemptInfoGeneric(RMAppAttempt appAttempt, int id, .getMasterContainer().getNodeHttpAddress(), nodeHttpAddress); WebServicesTestUtils.checkStringMatch("nodeId", appAttempt .getMasterContainer().getNodeId().toString(), nodeId); - assertTrue("logsLink doesn't match", logsLink.startsWith("//")); + assertTrue("logsLink doesn't match ", logsLink.startsWith("http://")); assertTrue( "logsLink doesn't contain user info", logsLink.endsWith("/" + user));