Integrated: 8358958: (aio) AsynchronousByteChannel.read/write should throw IAE if buffer is thread-confined

Alan Bateman alanb at openjdk.org
Fri Jun 13 06:36:37 UTC 2025


On Mon, 9 Jun 2025 09:34:11 GMT, Alan Bateman <alanb at openjdk.org> wrote:

> It's nonsensical to invoke read/write methods defined by the AsynchronousXXX channels with buffers that are views of memory segments allocated from a thread-confined arena.
> 
> For AsynchronousSocketChannel, the current behavior is for the read/write methods to initiate an I/O operation that completes with an IOException and an IllegalStateException as cause. For AsynchronousFileChannel, the current behavior is for the read/write methods to initiate an I/O operation that never completes (a thread in the channel groups terminates with a WrongThreadException).
> 
> The proposal is that the read/write methods reject, with IllegalArgumentException, any attempt to initiate as async I/O operation with a buffer from a thread-confined arena. IAE is already declared to be thrown for read-only buffers or attempting a positional read/write with a negative file position.
> 
> The java/nio/channels/etc/MemorySegments.java test is updated to test AsynchronousSocketChannel and AsynchronousFileChannel with buffers from all arena kinds. The tests include attempts to close a shared arena while an I/O operation is in progress. For now, the testAsyncFileChannelXXX tests are disabled until they meet up with the changes in JDK-8357847 (pr/25531).

This pull request has now been integrated.

Changeset: 9aeacf2d
Author:    Alan Bateman <alanb at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/9aeacf2de5bb8758dd614da365262338b0d26d6f
Stats:     443 lines in 9 files changed: 410 ins; 6 del; 27 mod

8358958: (aio) AsynchronousByteChannel.read/write should throw IAE if buffer is thread-confined

Reviewed-by: jpai, bpb

-------------

PR: https://git.openjdk.org/jdk/pull/25691


More information about the nio-dev mailing list