diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/ApplicationHistoryReader.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/ApplicationHistoryReader.java index eed4b16..bd632d8 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/ApplicationHistoryReader.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/ApplicationHistoryReader.java @@ -94,4 +94,16 @@ ApplicationAttemptHistoryData getApplicationAttempt( */ ContainerHistoryData getAMContainer(ApplicationAttemptId appAttemptId) throws IOException; + + /** + * This method returns Map{@link ContainerId,@link ContainerHistoryData} for + * specified {@link ApplicationAttemptId}. + * + * @param {@link ApplicationAttemptId} + * @return Map{@link ContainerId, @link ContainerHistoryData} for + * ApplicationAttemptId + * @throws {@link IOException} + */ + Map getContainers( + ApplicationAttemptId appAttemptId) throws IOException; } diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/MemoryApplicationHistoryStore.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/MemoryApplicationHistoryStore.java index 25422c9..0070c35 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/MemoryApplicationHistoryStore.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/main/java/org/apache/hadoop/yarn/server/applicationhistoryservice/MemoryApplicationHistoryStore.java @@ -161,4 +161,17 @@ public void writeContainer(ContainerHistoryData container) throws Throwable { } } } + + @Override + public Map getContainers( + ApplicationAttemptId appAttemptId) throws IOException { + HashMap containers = + new HashMap(); + for (ContainerId container : containerData.keySet()) { + if (container.getApplicationAttemptId().equals(appAttemptId)) { + containers.put(container, containerData.get(container)); + } + } + return containers; + } } diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/TestMemoryApplicationHistoryStore.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/TestMemoryApplicationHistoryStore.java index feb36d4..d8a8cdb 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/TestMemoryApplicationHistoryStore.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-applicationhistoryservice/src/test/java/org/apache/hadoop/yarn/server/applicationhistoryservice/TestMemoryApplicationHistoryStore.java @@ -18,6 +18,7 @@ package org.apache.hadoop.yarn.server.applicationhistoryservice; +import java.io.IOException; import java.util.HashMap; import junit.framework.Assert; @@ -72,7 +73,7 @@ public void tearDown() { } @Test - public void testReadApplication() { + public void testReadApplication() throws IOException { HashMap map = (HashMap) memstore .getAllApplications(); @@ -98,5 +99,13 @@ public void testReadApplication() { .newInstance(ApplicationId.newInstance(1234, 1), 1), 1)); Assert.assertEquals("container_1234_0001_01_000001", amContainer .getContainerId().toString()); + HashMap containers = + (HashMap) memstore + .getContainers(appAttempt.getApplicationAttemptId()); + Assert.assertEquals(1, containers.size()); + for (ContainerId container : containers.keySet()) { + Assert + .assertEquals("container_1234_0001_01_000001", container.toString()); + } } }