8003253: TEST_BUG: java/nio/channels/AsynchronousChannelGroup/Unbounded.java hang intermittently [win]
Reviewed-by: chegar
--- a/jdk/test/java/nio/channels/AsynchronousChannelGroup/Unbounded.java Fri Nov 09 01:15:04 2012 -0800
+++ b/jdk/test/java/nio/channels/AsynchronousChannelGroup/Unbounded.java Sun Nov 11 10:05:37 2012 +0000
@@ -36,6 +36,9 @@
// 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<AsynchronousSocketChannel> queue =
@@ -51,6 +54,8 @@
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 void failed(Throwable exc, AsynchronousSocketChannel ch) {
+ failed = true;
+ System.err.println("read failed: " + exc);
+ completed(0, ch);
}
});
}
@@ -104,6 +112,7 @@
while (remaining > 0) {
AsynchronousSocketChannel ch = queue.take();
ch.write(ByteBuffer.wrap("welcome".getBytes())).get();
+ ch.shutdownOutput();
ch.close();
remaining--;
}
@@ -112,5 +121,7 @@
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");
}
}