Quellcode durchsuchen

HADOOP-12418. TestRPC.testRPCInterruptedSimple fails intermittently. Contributed Kihwal Lee.
(cherry picked from commit 01b103f4ff2e8ee7e71d082885436c5cb7c6be0b)

Conflicts:
hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ipc/TestRPC.java

Kihwal Lee vor 9 Jahren
Ursprung
Commit
e327233e80

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

@@ -739,6 +739,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;
@@ -884,11 +885,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();
     }
     }