Return-Path: X-Original-To: apmail-hadoop-common-commits-archive@www.apache.org Delivered-To: apmail-hadoop-common-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 0EAFA11C7B for ; Mon, 8 Sep 2014 03:06:19 +0000 (UTC) Received: (qmail 62454 invoked by uid 500); 8 Sep 2014 03:06:14 -0000 Delivered-To: apmail-hadoop-common-commits-archive@hadoop.apache.org Received: (qmail 62293 invoked by uid 500); 8 Sep 2014 03:06:14 -0000 Mailing-List: contact common-commits-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: common-dev@hadoop.apache.org Delivered-To: mailing list common-commits@hadoop.apache.org Received: (qmail 62228 invoked by uid 99); 8 Sep 2014 03:06:14 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 08 Sep 2014 03:06:14 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id D261EA0DD03; Mon, 8 Sep 2014 03:06:13 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: szetszwo@apache.org To: common-commits@hadoop.apache.org Date: Mon, 08 Sep 2014 03:06:28 -0000 Message-Id: <2c5d46d5598b4ff595239eeceb74d026@git.apache.org> In-Reply-To: <7ebc54678aed4e5483e0efd518753b57@git.apache.org> References: <7ebc54678aed4e5483e0efd518753b57@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [18/19] git commit: YARN-2515. Updated ConverterUtils#toContainerId to parse epoch. Contributed by Tsuyoshi OZAWA YARN-2515. Updated ConverterUtils#toContainerId to parse epoch. Contributed by Tsuyoshi OZAWA Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/0974f434 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/0974f434 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/0974f434 Branch: refs/heads/HDFS-6584 Commit: 0974f434c47ffbf4b77a8478937fd99106c8ddbd Parents: 56dc496 Author: Jian He Authored: Sun Sep 7 18:25:44 2014 -0700 Committer: Jian He Committed: Sun Sep 7 18:29:22 2014 -0700 ---------------------------------------------------------------------- hadoop-yarn-project/CHANGES.txt | 3 ++ .../hadoop/yarn/api/records/ContainerId.java | 39 +++++++++++++++++++- .../apache/hadoop/yarn/util/ConverterUtils.java | 15 +------- .../apache/hadoop/yarn/api/TestContainerId.java | 4 ++ .../hadoop/yarn/util/TestConverterUtils.java | 9 +++++ 5 files changed, 55 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/0974f434/hadoop-yarn-project/CHANGES.txt ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt index ed9de87..d54fcd6 100644 --- a/hadoop-yarn-project/CHANGES.txt +++ b/hadoop-yarn-project/CHANGES.txt @@ -190,6 +190,9 @@ Release 2.6.0 - UNRELEASED YARN-2507. Documented CrossOriginFilter configurations for the timeline server. (Jonathan Eagles via zjshen) + YARN-2515. Updated ConverterUtils#toContainerId to parse epoch. + (Tsuyoshi OZAWA via jianhe) + OPTIMIZATIONS BUG FIXES http://git-wip-us.apache.org/repos/asf/hadoop/blob/0974f434/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ContainerId.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ContainerId.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ContainerId.java index fc7f404..321052b 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ContainerId.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/ContainerId.java @@ -18,8 +18,10 @@ package org.apache.hadoop.yarn.api.records; -import java.text.NumberFormat; +import com.google.common.base.Splitter; +import java.text.NumberFormat; +import java.util.Iterator; import org.apache.hadoop.classification.InterfaceAudience.Private; import org.apache.hadoop.classification.InterfaceAudience.Public; import org.apache.hadoop.classification.InterfaceStability.Stable; @@ -33,6 +35,8 @@ import org.apache.hadoop.yarn.util.Records; @Public @Stable public abstract class ContainerId implements Comparable{ + private static final Splitter _SPLITTER = Splitter.on('_').trimResults(); + private static final String CONTAINER_PREFIX = "container"; @Private @Unstable @@ -163,5 +167,38 @@ public abstract class ContainerId implements Comparable{ return sb.toString(); } + @Public + @Unstable + public static ContainerId fromString(String containerIdStr) { + Iterator it = _SPLITTER.split(containerIdStr).iterator(); + if (!it.next().equals(CONTAINER_PREFIX)) { + throw new IllegalArgumentException("Invalid ContainerId prefix: " + + containerIdStr); + } + try { + ApplicationAttemptId appAttemptID = toApplicationAttemptId(it); + 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: " + + containerIdStr, n); + } + } + + private static ApplicationAttemptId toApplicationAttemptId( + Iterator it) throws NumberFormatException { + ApplicationId appId = ApplicationId.newInstance(Long.parseLong(it.next()), + Integer.parseInt(it.next())); + ApplicationAttemptId appAttemptId = + ApplicationAttemptId.newInstance(appId, Integer.parseInt(it.next())); + return appAttemptId; + } + protected abstract void build(); } http://git-wip-us.apache.org/repos/asf/hadoop/blob/0974f434/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/ConverterUtils.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/ConverterUtils.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/ConverterUtils.java index f731af9..27f7bc1 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/ConverterUtils.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/ConverterUtils.java @@ -168,20 +168,7 @@ public class ConverterUtils { } public static ContainerId toContainerId(String containerIdStr) { - Iterator it = _split(containerIdStr).iterator(); - if (!it.next().equals(CONTAINER_PREFIX)) { - throw new IllegalArgumentException("Invalid ContainerId prefix: " - + containerIdStr); - } - try { - ApplicationAttemptId appAttemptID = toApplicationAttemptId(it); - ContainerId containerId = - ContainerId.newInstance(appAttemptID, Integer.parseInt(it.next())); - return containerId; - } catch (NumberFormatException n) { - throw new IllegalArgumentException("Invalid ContainerId: " - + containerIdStr, n); - } + return ContainerId.fromString(containerIdStr); } public static ApplicationAttemptId toApplicationAttemptId( http://git-wip-us.apache.org/repos/asf/hadoop/blob/0974f434/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/api/TestContainerId.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/api/TestContainerId.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/api/TestContainerId.java index b23d0ed..8baf244 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/api/TestContainerId.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/api/TestContainerId.java @@ -54,10 +54,14 @@ public class TestContainerId { long ts = System.currentTimeMillis(); ContainerId c6 = newContainerId(36473, 4365472, ts, 25645811); Assert.assertEquals("container_10_0001_01_000001", c1.toString()); + Assert.assertEquals(c1, + ContainerId.fromString("container_10_0001_01_000001")); Assert.assertEquals(479987, 0x003fffff & c6.getId()); Assert.assertEquals(6, c6.getId() >> 22); Assert.assertEquals("container_" + ts + "_36473_4365472_479987_06", c6.toString()); + Assert.assertEquals(c6, + ContainerId.fromString("container_" + ts + "_36473_4365472_479987_06")); } public static ContainerId newContainerId(int appId, int appAttemptId, http://git-wip-us.apache.org/repos/asf/hadoop/blob/0974f434/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/util/TestConverterUtils.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/util/TestConverterUtils.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/util/TestConverterUtils.java index 21af455..3f4147c 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/util/TestConverterUtils.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/util/TestConverterUtils.java @@ -56,6 +56,15 @@ public class TestConverterUtils { } @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)); }