diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/ConverterUtils.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/ConverterUtils.java index f731af9..1364dea 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/ConverterUtils.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/ConverterUtils.java @@ -175,8 +175,13 @@ public static ContainerId toContainerId(String containerIdStr) { } try { ApplicationAttemptId appAttemptID = toApplicationAttemptId(it); - ContainerId containerId = - ContainerId.newInstance(appAttemptID, Integer.parseInt(it.next())); + int id = Integer.parseInt(it.next()); + int epoch = 0; + if (it.hasNext()) { + epoch = Integer.parseInt(it.next()); + } + int cid = (epoch << 22) | id; + ContainerId containerId = ContainerId.newInstance(appAttemptID, cid); return containerId; } catch (NumberFormatException n) { throw new IllegalArgumentException("Invalid ContainerId: " diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/util/TestConverterUtils.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/util/TestConverterUtils.java index 21af455..3f4147c 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/util/TestConverterUtils.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/util/TestConverterUtils.java @@ -56,6 +56,15 @@ public void testContainerId() throws URISyntaxException { } @Test + public void testContainerIdWithEpoch() throws URISyntaxException { + ContainerId id = TestContainerId.newContainerId(0, 0, 0, 25645811); + String cid = ConverterUtils.toString(id); + assertEquals("container_0_0000_00_479987_06", cid); + ContainerId gen = ConverterUtils.toContainerId(cid); + assertEquals(gen.toString(), id.toString()); + } + + @Test public void testContainerIdNull() throws URISyntaxException { assertNull(ConverterUtils.toString((ContainerId)null)); }