On Fri, 7 Apr 2023 18:24:42 GMT, Archie Cobbs <aco...@openjdk.org> wrote:

>> IO stream classes like `FileOutputStream` can have assocated NIO channels.
>> 
>> When `close()` is invoked on one of these classes, it in turn invokes 
>> `close()` on the associated channel (if any). But when the associated 
>> channel's `close()` method is invoked, it in turn invokes `close()` on the 
>> associated stream (if any).
>> 
>> As a result, these IO stream `close()` methods invoke themselves reentrantly 
>> when there is an associated channel.
>> 
>> This is not a problem for these classes because they are written to handle 
>> this (i.e., they are idempotent), but it can be surprising (or worse, just 
>> silently bug-inducing) for subclasses that override `close()`.
>> 
>> There are two possible ways to address this:
>> 1. Modify the code to detect and avoid the (unnecessary) reentrant 
>> invocations
>> 2. Add a `@implNote` to the Javadoc so subclass implementers are made aware
>> 
>> This patch takes the second, more conservative approach.
>
> Archie Cobbs has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Address review comments.

pingbot

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

PR Comment: https://git.openjdk.org/jdk/pull/13379#issuecomment-1540952824

Reply via email to