diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt index 23923d031de..985e4f52d5b 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-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 0aa68a22681..7013fc8a376 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; @@ -175,7 +176,12 @@ public class ConverterUtils { } public static ContainerId toContainerId(String containerIdStr) { - return ContainerId.fromString(containerIdStr); + try { + return ContainerId.fromString(containerIdStr); + } catch (NoSuchElementException e) { + throw new IllegalArgumentException("Invalid ContainerId: " + + containerIdStr, e); + } } public static ApplicationAttemptId toApplicationAttemptId( @@ -190,6 +196,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 +215,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 7d537855348..3cec38b060c 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"); + } }