diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ContainerId.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ContainerId.java index d03a439..9d8cfde 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ContainerId.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ContainerId.java @@ -37,6 +37,7 @@ public abstract class ContainerId implements Comparable{ private static final Splitter _SPLITTER = Splitter.on('_').trimResults(); private static final String CONTAINER_PREFIX = "container"; + private static final String EPOCH_PREFIX = "epoch"; @Private @Unstable @@ -161,7 +162,7 @@ public int compareTo(ContainerId other) { @Override public String toString() { StringBuilder sb = new StringBuilder(); - sb.append("container_"); + sb.append(CONTAINER_PREFIX + "_"); ApplicationId appId = getApplicationAttemptId().getApplicationId(); sb.append(appId.getClusterTimestamp()).append("_"); sb.append(ApplicationId.appIdFormat.get().format(appId.getId())) @@ -172,7 +173,8 @@ public String toString() { sb.append(containerIdFormat.get().format(0xffffffffffL & getContainerId())); long epoch = getContainerId() >> 40; if (epoch > 0) { - sb.append("_").append(appAttemptIdAndEpochFormat.get().format(epoch)); + sb.append("_" + EPOCH_PREFIX + "_") + .append(appAttemptIdAndEpochFormat.get().format(epoch)); } return sb.toString(); } @@ -190,6 +192,10 @@ public static ContainerId fromString(String containerIdStr) { long id = Long.parseLong(it.next()); long epoch = 0; if (it.hasNext()) { + if (!it.next().equals(EPOCH_PREFIX)) { + throw new IllegalArgumentException("Invalid ContainerId prefix: " + + containerIdStr); + } epoch = Integer.parseInt(it.next()); } long cid = (epoch << 40) | id; diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/api/TestContainerId.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/api/TestContainerId.java index c11fd96..9039560 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/api/TestContainerId.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/api/TestContainerId.java @@ -63,13 +63,15 @@ public void testContainerId() { Assert.assertEquals(999799999997L, 0xffffffffffL & c7.getContainerId()); Assert.assertEquals(3, c7.getContainerId() >> 40); Assert.assertEquals( - "container_" + ts + "_36473_4365472_999799999997_03", c7.toString()); + "container_" + ts + "_36473_4365472_999799999997_epoch_03", + c7.toString()); ContainerId c8 = newContainerId(36473, 4365472, ts, 844424930131965L); Assert.assertEquals(1099511627773L, 0xffffffffffL & c8.getContainerId()); Assert.assertEquals(767, c8.getContainerId() >> 40); Assert.assertEquals( - "container_" + ts + "_36473_4365472_1099511627773_767", c8.toString()); + "container_" + ts + "_36473_4365472_1099511627773_epoch_767", + c8.toString()); } public static ContainerId newContainerId(int appId, int appAttemptId, 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 f7e7fe4..bfcb45b 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 @@ -67,14 +67,16 @@ public void testContainerIdWithEpoch() throws URISyntaxException { ContainerId id2 = TestContainerId.newContainerId(36473, 4365472, ts, 4298334883325L); String cid2 = ConverterUtils.toString(id2); - assertEquals("container_" + ts + "_36473_4365472_999799999997_03", cid2); + assertEquals( + "container_" + ts + "_36473_4365472_999799999997_epoch_03", cid2); ContainerId gen2 = ConverterUtils.toContainerId(cid2); assertEquals(gen2.toString(), id2.toString()); ContainerId id3 = TestContainerId.newContainerId(36473, 4365472, ts, 844424930131965L); String cid3 = ConverterUtils.toString(id3); - assertEquals("container_" + ts + "_36473_4365472_1099511627773_767", cid3); + assertEquals( + "container_" + ts + "_36473_4365472_1099511627773_epoch_767", cid3); ContainerId gen3 = ConverterUtils.toContainerId(cid3); assertEquals(gen3.toString(), id3.toString()); }