Browse Source

HADOOP-12418. TestRPC.testRPCInterruptedSimple fails intermittently. Contributed Kihwal Lee.

Kihwal Lee 9 years ago
parent
commit
01b103f4ff

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

@@ -1324,6 +1324,9 @@ Release 2.8.0 - UNRELEASED
     HADOOP-12474. MiniKMS should use random ports for Jetty server by default.
     HADOOP-12474. MiniKMS should use random ports for Jetty server by default.
     (Mingliang Liu via wheat9)
     (Mingliang Liu via wheat9)
 
 
+    HADOOP-12418. TestRPC.testRPCInterruptedSimple fails intermittently.
+    (kihwal)
+
 Release 2.7.2 - UNRELEASED
 Release 2.7.2 - UNRELEASED
 
 
   INCOMPATIBLE CHANGES
   INCOMPATIBLE CHANGES

+ 7 - 4
hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ipc/TestRPC.java

@@ -28,6 +28,7 @@ import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 import static org.junit.Assert.fail;
 
 
 import java.io.Closeable;
 import java.io.Closeable;
+import java.io.InterruptedIOException;
 import java.io.IOException;
 import java.io.IOException;
 import java.lang.management.ManagementFactory;
 import java.lang.management.ManagementFactory;
 import java.lang.management.ThreadInfo;
 import java.lang.management.ThreadInfo;
@@ -885,11 +886,13 @@ public class TestRPC {
         proxy.ping();
         proxy.ping();
         fail("Interruption did not cause IPC to fail");
         fail("Interruption did not cause IPC to fail");
       } catch (IOException ioe) {
       } catch (IOException ioe) {
-        if (!ioe.toString().contains("InterruptedException")) {
-          throw ioe;
+        if (ioe.toString().contains("InterruptedException") ||
+            ioe instanceof InterruptedIOException) {
+          // clear interrupt status for future tests
+          Thread.interrupted();
+          return;
         }
         }
-        // clear interrupt status for future tests
-        Thread.interrupted();
+        throw ioe;
       }
       }
     } finally {
     } finally {
       server.stop();
       server.stop();