RFR: 8329190: (ch) DatagramChannel.receive should throw ClosedChannelException when called on closed channel
Alan Bateman
alanb at openjdk.org
Tue Apr 16 13:25:59 UTC 2024
On Tue, 16 Apr 2024 12:03:07 GMT, Mark Sheppard <msheppar at openjdk.org> wrote:
> Please oblige and review the following changes (provided by Alan Bateman) which addresses the issue outlined in
> JDK-8329190: DatagramChannel.receive should throw ClosedChannelException when called on closed channel
>
> This ensures that a ClosedChannelException is consistently thrown from DatagramChannel send and receive methods, especially in the context of asynchronous closure and calling thread interruption.
>
> The change is to move the ensureOpen() method call, which checks that a channel has not been closed, to the start of read/write send/receive methods on the DatagramChannel
>
> The regression suites for jdk_nio and jdk_net and the JCK tests for api/java_nio api/java_net have been executed in repeat mode, multiple times, without any observed relevant failures.
Thanks for taking this one. The changes look fine but I can't be the Reviewer as I provided the changes.
As background, the refactoring in JDK 11 means that the AsynchronousCloseException (a sub-class of ClosedChannelException) is thrown when an operation is invoked on a closed network channel. No tests were failing because it's not a correctness issue, but confusing all the same. The test added here will ensure that we don't regress in this area again.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/18796#issuecomment-2059079184
More information about the nio-dev
mailing list