From 7bc492adab90c4533c20d48c004e92cb917cd199 Mon Sep 17 00:00:00 2001 From: Tsuyoshi Ozawa Date: Thu, 12 Feb 2015 23:48:43 +0900 Subject: [PATCH] YARN-3157. Refactor the exception handling in ConverterUtils#to*Id. Contributed by Bibin A Chundatt. --- hadoop-yarn-project/CHANGES.txt | 3 +++ .../hadoop/yarn/api/records/ContainerId.java | 5 +++++ .../apache/hadoop/yarn/util/ConverterUtils.java | 7 +++++++ .../hadoop/yarn/util/TestConverterUtils.java | 15 +++++++++++++++ 4 files changed, 30 insertions(+) diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt index 3b741a1062..2fbe4ae907 100644 --- a/hadoop-yarn-project/CHANGES.txt +++ b/hadoop-yarn-project/CHANGES.txt @@ -269,6 +269,9 @@ Release 2.7.0 - UNRELEASED YARN-1237. Description for yarn.nodemanager.aux-services in yarn-default.xml is misleading. (Brahma Reddy Battula via ozawa) + YARN-3157. Refactor the exception handling in ConverterUtils#to*Id. + (Bibin A Chundatt via ozawa) + OPTIMIZATIONS YARN-2990. FairScheduler's delay-scheduling always waits for node-local and 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 5d0d65a966..c9b96181ad 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 @@ -22,6 +22,8 @@ import com.google.common.base.Splitter; import java.text.NumberFormat; import java.util.Iterator; +import java.util.NoSuchElementException; + import org.apache.hadoop.classification.InterfaceAudience.Private; import org.apache.hadoop.classification.InterfaceAudience.Public; import org.apache.hadoop.classification.InterfaceStability.Stable; @@ -231,6 +233,9 @@ public abstract class ContainerId implements Comparable{ } catch (NumberFormatException n) { throw new IllegalArgumentException("Invalid ContainerId: " + containerIdStr, n); + } catch (NoSuchElementException e) { + throw new IllegalArgumentException("Invalid ContainerId: " + + containerIdStr, e); } } 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 0aa68a2268..e9674cfc14 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 @@ -27,6 +27,7 @@ import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; +import java.util.NoSuchElementException; import org.apache.hadoop.classification.InterfaceAudience.Private; import org.apache.hadoop.fs.Path; @@ -190,6 +191,9 @@ public class ConverterUtils { } catch (NumberFormatException n) { throw new IllegalArgumentException("Invalid AppAttemptId: " + applicationAttmeptIdStr, n); + } catch (NoSuchElementException e) { + throw new IllegalArgumentException("Invalid AppAttemptId: " + + applicationAttmeptIdStr, e); } } @@ -206,6 +210,9 @@ public class ConverterUtils { } catch (NumberFormatException n) { throw new IllegalArgumentException("Invalid ApplicationId: " + appIdStr, n); + } catch (NoSuchElementException e) { + throw new IllegalArgumentException("Invalid ApplicationId: " + + appIdStr, e); } } 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 7d53785534..3cec38b060 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 @@ -99,4 +99,19 @@ public class TestConverterUtils { assertEquals(nid.getPort(), 0); assertEquals(nid.getHost(), "node"); } + + @Test(expected = IllegalArgumentException.class) + public void testInvalidContainerId() { + ConverterUtils.toContainerId("container_e20_1423221031460_0003_01"); + } + + @Test(expected = IllegalArgumentException.class) + public void testInvalidAppattemptId() { + ConverterUtils.toApplicationAttemptId("appattempt_1423221031460"); + } + + @Test(expected = IllegalArgumentException.class) + public void testApplicationId() { + ConverterUtils.toApplicationId("application_1423221031460"); + } }