diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/ApplicationHistoryManagerOnTimelineStore.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/ApplicationHistoryManagerOnTimelineStore.java index f00ec9c..238049d 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/ApplicationHistoryManagerOnTimelineStore.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/ApplicationHistoryManagerOnTimelineStore.java @@ -59,10 +59,15 @@ import org.apache.hadoop.yarn.util.ConverterUtils; import org.apache.hadoop.yarn.webapp.util.WebAppUtils; +import com.google.common.annotations.VisibleForTesting; + public class ApplicationHistoryManagerOnTimelineStore extends AbstractService implements ApplicationHistoryManager { + @VisibleForTesting + static final String UNAVAILABLE = "N/A"; + private TimelineDataManager timelineDataManager; private ApplicationACLsManager aclsManager; private String serverHttpAddress; @@ -506,6 +511,21 @@ private ApplicationReportExt generateApplicationReport(TimelineEntity entity, app.appReport.setCurrentApplicationAttemptId( ApplicationAttemptId.newInstance(app.appReport.getApplicationId(), -1)); } + if (app.appReport.getHost() == null) { + app.appReport.setHost(UNAVAILABLE); + } + if (app.appReport.getRpcPort() < 0) { + app.appReport.setRpcPort(-1); + } + if (app.appReport.getTrackingUrl() == null) { + app.appReport.setTrackingUrl(UNAVAILABLE); + } + if (app.appReport.getOriginalTrackingUrl() == null) { + app.appReport.setOriginalTrackingUrl(UNAVAILABLE); + } + if (app.appReport.getDiagnostics() == null) { + app.appReport.setDiagnostics(""); + } return app; } diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/TestApplicationHistoryManagerOnTimelineStore.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/TestApplicationHistoryManagerOnTimelineStore.java index e6bfcd9..c4e583f 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/TestApplicationHistoryManagerOnTimelineStore.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/TestApplicationHistoryManagerOnTimelineStore.java @@ -167,16 +167,19 @@ public ApplicationReport run() throws Exception { if (callerUGI != null && callerUGI.getShortUserName().equals("user3")) { Assert.assertEquals(ApplicationAttemptId.newInstance(appId, -1), app.getCurrentApplicationAttemptId()); - Assert.assertEquals(null, app.getHost()); + Assert.assertEquals(ApplicationHistoryManagerOnTimelineStore.UNAVAILABLE, + app.getHost()); Assert.assertEquals(-1, app.getRpcPort()); - Assert.assertEquals(null, app.getTrackingUrl()); - Assert.assertEquals(null, app.getOriginalTrackingUrl()); - Assert.assertEquals(null, app.getDiagnostics()); + Assert.assertEquals(ApplicationHistoryManagerOnTimelineStore.UNAVAILABLE, + app.getTrackingUrl()); + Assert.assertEquals(ApplicationHistoryManagerOnTimelineStore.UNAVAILABLE, + app.getOriginalTrackingUrl()); + Assert.assertEquals("", app.getDiagnostics()); } else { Assert.assertEquals(ApplicationAttemptId.newInstance(appId, 1), app.getCurrentApplicationAttemptId()); Assert.assertEquals("test host", app.getHost()); - Assert.assertEquals(-100, app.getRpcPort()); + Assert.assertEquals(100, app.getRpcPort()); Assert.assertEquals("test tracking url", app.getTrackingUrl()); Assert.assertEquals("test original tracking url", app.getOriginalTrackingUrl()); @@ -224,7 +227,7 @@ public ApplicationAttemptReport run() throws Exception { Assert.assertEquals(ContainerId.newInstance(appAttemptId, 1), appAttempt.getAMContainerId()); Assert.assertEquals("test host", appAttempt.getHost()); - Assert.assertEquals(-100, appAttempt.getRpcPort()); + Assert.assertEquals(100, appAttempt.getRpcPort()); Assert.assertEquals("test tracking url", appAttempt.getTrackingUrl()); Assert.assertEquals("test original tracking url", appAttempt.getOriginalTrackingUrl()); @@ -270,7 +273,7 @@ public ContainerReport run() throws Exception { Assert.assertEquals(Integer.MAX_VALUE + 2L, container.getFinishTime()); Assert.assertEquals(Resource.newInstance(-1, -1), container.getAllocatedResource()); - Assert.assertEquals(NodeId.newInstance("test host", -100), + Assert.assertEquals(NodeId.newInstance("test host", 100), container.getAssignedNode()); Assert.assertEquals(Priority.UNDEFINED, container.getPriority()); Assert @@ -278,7 +281,7 @@ public ContainerReport run() throws Exception { Assert.assertEquals(ContainerState.COMPLETE, container.getContainerState()); Assert.assertEquals(-1, container.getContainerExitStatus()); Assert.assertEquals("http://0.0.0.0:8188/applicationhistory/logs/" + - "test host:-100/container_0_0001_01_000001/" + "test host:100/container_0_0001_01_000001/" + "container_0_0001_01_000001/user1", container.getLogUrl()); } @@ -453,7 +456,7 @@ private static TimelineEntity createAppAttemptTimelineEntity( eventInfo.put(AppAttemptMetricsConstants.ORIGINAL_TRACKING_URL_EVENT_INFO, "test original tracking url"); eventInfo.put(AppAttemptMetricsConstants.HOST_EVENT_INFO, "test host"); - eventInfo.put(AppAttemptMetricsConstants.RPC_PORT_EVENT_INFO, -100); + eventInfo.put(AppAttemptMetricsConstants.RPC_PORT_EVENT_INFO, 100); eventInfo.put(AppAttemptMetricsConstants.MASTER_CONTAINER_EVENT_INFO, ContainerId.newInstance(appAttemptId, 1)); tEvent.setEventInfo(eventInfo); @@ -490,7 +493,7 @@ private static TimelineEntity createContainerEntity(ContainerId containerId) { entityInfo.put(ContainerMetricsConstants.ALLOCATED_VCORE_ENTITY_INFO, -1); entityInfo.put(ContainerMetricsConstants.ALLOCATED_HOST_ENTITY_INFO, "test host"); - entityInfo.put(ContainerMetricsConstants.ALLOCATED_PORT_ENTITY_INFO, -100); + entityInfo.put(ContainerMetricsConstants.ALLOCATED_PORT_ENTITY_INFO, 100); entityInfo .put(ContainerMetricsConstants.ALLOCATED_PRIORITY_ENTITY_INFO, -1); entity.setOtherInfo(entityInfo);