Jelajahi Sumber

YARN-3157. Refactor the exception handling in ConverterUtils#to*Id. Contributed by Bibin A Chundatt.

Tsuyoshi Ozawa 10 tahun lalu
induk
melakukan
7bc492adab

+ 3 - 0
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 

+ 5 - 0
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<ContainerId>{
     } catch (NumberFormatException n) {
       throw new IllegalArgumentException("Invalid ContainerId: "
           + containerIdStr, n);
+    } catch (NoSuchElementException e) {
+      throw new IllegalArgumentException("Invalid ContainerId: "
+          + containerIdStr, e);
     }
   }
 

+ 7 - 0
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);
     }
   }
 

+ 15 - 0
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");
+  }
 }