Browse Source

YARN-3400. [JDK 8] Build Failure due to unreported exceptions in RPCUtil (rkanter)

Robert Kanter 10 years ago
parent
commit
87130bf6b2

+ 3 - 0
hadoop-yarn-project/CHANGES.txt

@@ -108,6 +108,9 @@ Release 2.8.0 - UNRELEASED
     YARN-3383. AdminService should use "warn" instead of "info" to log exception 
     when operation fails. (Li Lu via wangda)
 
+    YARN-3400. [JDK 8] Build Failure due to unreported exceptions in
+    RPCUtil (rkanter)
+
 Release 2.7.0 - UNRELEASED
 
   INCOMPATIBLE CHANGES

+ 19 - 4
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/ipc/RPCUtil.java

@@ -70,6 +70,21 @@ public class RPCUtil {
     }
   }
 
+  private static <T extends YarnException> T instantiateYarnException(
+      Class<? extends T> cls, RemoteException re) throws RemoteException {
+    return instantiateException(cls, re);
+  }
+
+  private static <T extends IOException> T instantiateIOException(
+      Class<? extends T> cls, RemoteException re) throws RemoteException {
+    return instantiateException(cls, re);
+  }
+
+  private static <T extends RuntimeException> T instantiateRuntimeException(
+      Class<? extends T> cls, RemoteException re) throws RemoteException {
+    return instantiateException(cls, re);
+  }
+
   /**
    * Utility method that unwraps and returns appropriate exceptions.
    * 
@@ -94,17 +109,17 @@ public class RPCUtil {
           // Assume this to be a new exception type added to YARN. This isn't
           // absolutely correct since the RPC layer could add an exception as
           // well.
-          throw instantiateException(YarnException.class, re);
+          throw instantiateYarnException(YarnException.class, re);
         }
 
         if (YarnException.class.isAssignableFrom(realClass)) {
-          throw instantiateException(
+          throw instantiateYarnException(
               realClass.asSubclass(YarnException.class), re);
         } else if (IOException.class.isAssignableFrom(realClass)) {
-          throw instantiateException(realClass.asSubclass(IOException.class),
+          throw instantiateIOException(realClass.asSubclass(IOException.class),
               re);
         } else if (RuntimeException.class.isAssignableFrom(realClass)) {
-          throw instantiateException(
+          throw instantiateRuntimeException(
               realClass.asSubclass(RuntimeException.class), re);
         } else {
           throw re;