From 86d36e5d55b37512aace2759dfb81effb8e377ab Mon Sep 17 00:00:00 2001 From: Alan Bateman Date: Sun, 11 Nov 2012 10:05:37 +0000 Subject: [PATCH] 8003253: TEST_BUG: java/nio/channels/AsynchronousChannelGroup/Unbounded.java hang intermittently [win] Reviewed-by: chegar --- .../channels/AsynchronousChannelGroup/Unbounded.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/jdk/test/java/nio/channels/AsynchronousChannelGroup/Unbounded.java b/jdk/test/java/nio/channels/AsynchronousChannelGroup/Unbounded.java index 0ca96fbbb3d..6e764a2b671 100644 --- a/jdk/test/java/nio/channels/AsynchronousChannelGroup/Unbounded.java +++ b/jdk/test/java/nio/channels/AsynchronousChannelGroup/Unbounded.java @@ -36,6 +36,9 @@ public class Unbounded { // number of concurrent completion handlers static final int CONCURRENCY_COUNT = 256; + // set to true if an I/O operation fails + static volatile boolean failed; + public static void main(String[] args) throws Exception { // all accepted connections are added to a queue final ArrayBlockingQueue queue = @@ -51,6 +54,8 @@ public class Unbounded { listener.accept((Void)null, this); } public void failed(Throwable exc, Void att) { + failed = true; + System.err.println("accept failed: " + exc); } }); System.out.println("Listener created."); @@ -94,6 +99,9 @@ public class Unbounded { } } public void failed(Throwable exc, AsynchronousSocketChannel ch) { + failed = true; + System.err.println("read failed: " + exc); + completed(0, ch); } }); } @@ -104,6 +112,7 @@ public class Unbounded { while (remaining > 0) { AsynchronousSocketChannel ch = queue.take(); ch.write(ByteBuffer.wrap("welcome".getBytes())).get(); + ch.shutdownOutput(); ch.close(); remaining--; } @@ -112,5 +121,7 @@ public class Unbounded { System.out.println("Waiting for all threads to reach barrier"); barrier.await(); listener.close(); + if (failed) + throw new RuntimeException("I/O failed failed, see log for details"); } }