mirror of
https://github.com/openjdk/jdk.git
synced 2026-04-14 00:49:42 +00:00
6944810: (ch) Assert failure in sun.nio.ch.PendingIoCache.clearPendingIoMap [win]
Reviewed-by: chegar
This commit is contained in:
parent
45fd401ff7
commit
1d820278f6
@ -48,7 +48,7 @@ import java.util.Collections;
|
||||
*
|
||||
* <p> An asynchronous file channel does not have a <i>current position</i>
|
||||
* within the file. Instead, the file position is specified to each read and
|
||||
* write methd that initiate asynchronous operations. A {@link CompletionHandler}
|
||||
* write method that initiates asynchronous operations. A {@link CompletionHandler}
|
||||
* is specified as a parameter and is invoked to consume the result of the I/O
|
||||
* operation. This class also defines read and write methods that initiate
|
||||
* asynchronous operations, returning a {@link Future} to represent the pending
|
||||
@ -73,7 +73,7 @@ import java.util.Collections;
|
||||
* which tasks are submitted to handle I/O events and dispatch to completion
|
||||
* handlers that consume the results of I/O operations on the channel. The
|
||||
* completion handler for an I/O operation initiated on a channel is guaranteed
|
||||
* to be invoked by one threads in the thread pool (This ensures that the
|
||||
* to be invoked by one of the threads in the thread pool (This ensures that the
|
||||
* completion handler is run by a thread with the expected <em>identity</em>).
|
||||
* Where an I/O operation completes immediately, and the initiating thread is
|
||||
* itself a thread in the thread pool, then the completion handler may be invoked
|
||||
|
||||
@ -110,8 +110,7 @@ class PendingIoCache {
|
||||
if (closed)
|
||||
return;
|
||||
|
||||
// handle the case that where there are I/O operations that have
|
||||
// not completed.
|
||||
// handle case where I/O operations that have not completed.
|
||||
if (!pendingIoMap.isEmpty())
|
||||
clearPendingIoMap();
|
||||
|
||||
@ -132,7 +131,9 @@ class PendingIoCache {
|
||||
closePending = true;
|
||||
try {
|
||||
this.wait(50);
|
||||
} catch (InterruptedException x) { }
|
||||
} catch (InterruptedException x) {
|
||||
Thread.currentThread().interrupt();
|
||||
}
|
||||
closePending = false;
|
||||
if (pendingIoMap.isEmpty())
|
||||
return;
|
||||
|
||||
@ -439,6 +439,7 @@ public class WindowsAsynchronousFileChannelImpl
|
||||
address = ((DirectBuffer)buf).address();
|
||||
}
|
||||
|
||||
boolean pending = false;
|
||||
try {
|
||||
begin();
|
||||
|
||||
@ -449,6 +450,7 @@ public class WindowsAsynchronousFileChannelImpl
|
||||
n = readFile(handle, address, rem, position, overlapped);
|
||||
if (n == IOStatus.UNAVAILABLE) {
|
||||
// I/O is pending
|
||||
pending = true;
|
||||
return;
|
||||
} else if (n == IOStatus.EOF) {
|
||||
result.setResult(n);
|
||||
@ -460,14 +462,15 @@ public class WindowsAsynchronousFileChannelImpl
|
||||
// failed to initiate read
|
||||
result.setFailure(toIOException(x));
|
||||
} finally {
|
||||
if (!pending) {
|
||||
// release resources
|
||||
if (overlapped != 0L)
|
||||
ioCache.remove(overlapped);
|
||||
releaseBufferIfSubstituted();
|
||||
}
|
||||
end();
|
||||
}
|
||||
|
||||
// release resources
|
||||
if (overlapped != 0L)
|
||||
ioCache.remove(overlapped);
|
||||
releaseBufferIfSubstituted();
|
||||
|
||||
// invoke completion handler
|
||||
Invoker.invoke(result);
|
||||
}
|
||||
|
||||
@ -239,14 +239,14 @@ class WindowsAsynchronousSocketChannelImpl
|
||||
result.setResult(null);
|
||||
}
|
||||
} catch (Throwable x) {
|
||||
if (overlapped != 0L)
|
||||
ioCache.remove(overlapped);
|
||||
exc = x;
|
||||
} finally {
|
||||
end();
|
||||
}
|
||||
|
||||
if (exc != null) {
|
||||
if (overlapped != 0L)
|
||||
ioCache.remove(overlapped);
|
||||
closeChannel();
|
||||
result.setFailure(toIOException(exc));
|
||||
}
|
||||
|
||||
@ -380,30 +380,9 @@ java/io/File/MaxPathLength.java windows-all
|
||||
|
||||
# jdk_nio
|
||||
|
||||
# 6944810
|
||||
java/nio/channels/FileChannel/ReleaseOnCloseDeadlock.java windows-all
|
||||
|
||||
# 6963118
|
||||
java/nio/channels/Selector/Wakeup.java windows-all
|
||||
|
||||
# The asynchronous I/O implementation on Windows requires Windows XP or newer.
|
||||
# We can remove the following once all Windows 2000 machines have been
|
||||
# decommissioned.
|
||||
java/nio/channels/AsynchronousChannelGroup/Basic.java windows-5.0
|
||||
java/nio/channels/AsynchronousChannelGroup/GroupOfOne.java windows-5.0
|
||||
java/nio/channels/AsynchronousChannelGroup/Identity.java windows-5.0
|
||||
java/nio/channels/AsynchronousChannelGroup/Restart.java windows-5.0
|
||||
java/nio/channels/AsynchronousChannelGroup/Unbounded.java windows-5.0
|
||||
java/nio/channels/AsynchronousDatagramChannel/Basic.java windows-5.0
|
||||
java/nio/channels/AsynchronousFileChannel/Lock.java windows-5.0
|
||||
java/nio/channels/AsynchronousServerSocketChannel/Basic.java windows-5.0
|
||||
java/nio/channels/AsynchronousServerSocketChannel/WithSecurityManager.java windows-5.0
|
||||
java/nio/channels/AsynchronousSocketChannel/Basic.java windows-5.0
|
||||
java/nio/channels/AsynchronousSocketChannel/DieBeforeComplete.java windows-5.0
|
||||
java/nio/channels/AsynchronousSocketChannel/Leaky.java windows-5.0
|
||||
java/nio/channels/AsynchronousSocketChannel/StressLoopback.java windows-5.0
|
||||
java/nio/channels/Channels/Basic2.java windows-5.0
|
||||
|
||||
# 6959891
|
||||
com/sun/nio/sctp/SctpChannel/SocketOptionTests.java
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user