You are viewing a plain text version of this content. The canonical link for it is here.
Posted to yarn-commits@hadoop.apache.org by ss...@apache.org on 2013/06/12 00:35:59 UTC

svn commit: r1492002 - in /hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project: ./ hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/ipc/ hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/ipc/

Author: sseth
Date: Tue Jun 11 22:35:59 2013
New Revision: 1492002

URL: http://svn.apache.org/r1492002
Log:
merge YARN-731 from branch-2. RPCUtil.unwrapAndThrowException should unwrap remote RuntimeExceptions. Contributed by Zhijie Shen.

Modified:
    hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project/CHANGES.txt
    hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/ipc/RPCUtil.java
    hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/ipc/TestRPCUtil.java

Modified: hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project/CHANGES.txt?rev=1492002&r1=1492001&r2=1492002&view=diff
==============================================================================
--- hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project/CHANGES.txt (original)
+++ hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project/CHANGES.txt Tue Jun 11 22:35:59 2013
@@ -268,6 +268,9 @@ Release 2.1.0-beta - UNRELEASED
     YARN-737. Throw some specific exceptions directly instead of wrapping them
     in YarnException. (Jian He via sseth)
 
+    YARN-731. RPCUtil.unwrapAndThrowException should unwrap remote
+    RuntimeExceptions. (Zhijie Shen via sseth)
+
   OPTIMIZATIONS
 
     YARN-512. Log aggregation root directory check is more expensive than it

Modified: hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/ipc/RPCUtil.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/ipc/RPCUtil.java?rev=1492002&r1=1492001&r2=1492002&view=diff
==============================================================================
--- hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/ipc/RPCUtil.java (original)
+++ hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/ipc/RPCUtil.java Tue Jun 11 22:35:59 2013
@@ -101,6 +101,9 @@ public class RPCUtil {
         } else if (IOException.class.isAssignableFrom(realClass)) {
           throw instantiateException(realClass.asSubclass(IOException.class),
               re);
+        } else if (RuntimeException.class.isAssignableFrom(realClass)) {
+          throw instantiateException(
+              realClass.asSubclass(RuntimeException.class), re);
         } else {
           throw re;
         }
@@ -110,6 +113,9 @@ public class RPCUtil {
       } else if (cause instanceof IOException) {
         // RPC Client exception.
         throw (IOException) cause;
+      } else if (cause instanceof RuntimeException) {
+        // RPC RuntimeException
+        throw (RuntimeException) cause;
       } else {
         // Should not be generated.
         throw new IOException(se);

Modified: hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/ipc/TestRPCUtil.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/ipc/TestRPCUtil.java?rev=1492002&r1=1492001&r2=1492002&view=diff
==============================================================================
--- hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/ipc/TestRPCUtil.java (original)
+++ hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/ipc/TestRPCUtil.java Tue Jun 11 22:35:59 2013
@@ -65,6 +65,12 @@ public class TestRPCUtil {
   }
 
   @Test
+  public void testRemoteRuntimeExceptionUnwrapping() {
+    Class<? extends Throwable> exception = NullPointerException.class;
+    verifyRemoteExceptionUnwrapping(exception, exception.getName());
+  }
+
+  @Test
   public void testUnexpectedRemoteExceptionUnwrapping() {
     // Non IOException, YarnException thrown by the remote side.
     Class<? extends Throwable> exception = Exception.class;
@@ -110,6 +116,23 @@ public class TestRPCUtil {
     Assert.assertTrue(t.getMessage().contains(message));
   }
 
+  @Test
+  public void testRPCRuntimeExceptionUnwrapping() {
+    String message = "RPCRuntimeExceptionUnwrapping";
+    RuntimeException re = new NullPointerException(message);
+    ServiceException se = new ServiceException(re);
+
+    Throwable t = null;
+    try {
+      RPCUtil.unwrapAndThrowException(se);
+    }  catch (Throwable thrown) {
+      t = thrown;
+    }
+
+    Assert.assertTrue(NullPointerException.class.isInstance(t));
+    Assert.assertTrue(t.getMessage().contains(message));
+  }
+
   private void verifyRemoteExceptionUnwrapping(
       Class<? extends Throwable> expectedLocalException,
       String realExceptionClassName) {