On Tue, 6 Sep 2022 16:29:39 GMT, Alan Bateman <al...@openjdk.org> wrote:

>> BIS dates from JDK 1.0 and it's not hard to find examples that extend it. 
>> The HexPrinter test reminds us that it has been possible for 25+ years to 
>> override the read methods and snoop on all bytes that are read. Adding an 
>> override of the transferTo method that bypasses the read methods might break 
>> these subclasses. So I think Daniel is right that we have to be cautious.
>> 
>> So I think the feedback that you have now is that bypassing the buffer is 
>> problematic when using mark, when there are buffered bytes, or when BIS has 
>> been extended. It may be that the starting point is something very 
>> conservative like this:
>> 
>> 
>>     @Override
>>     public long transferTo(OutputStream out) throws IOException {
>>         if (getClass() == BufferedInputStream.class
>>                 && ((count - pos) <= 0) && (markpos == -1)) {
>>             return getInIfOpen().transferTo(out);
>>         } else {
>>             return super.transferTo(out);
>>         }
>>     }
>> 
>> 
>> There is also the issue of locking and async close to look into.
>
>> @AlanBateman Async close leaves BIS in an invalid state. The JavaDocs say ` 
>> The behavior for the case where the input and/or output stream is 
>> asynchronously closed, or the thread interrupted during the transfer, is 
>> highly input and output stream specific, and therefore not specified.`. 
> 
> Yes, I believe I suggested that wording when the method was added. The 
> java.io APIs mostly pre-date deep consideration of those topics.
> 
> I've looked at the update change to BIS in f2f9a904 and I think it's okay.
> 
> On the CSR topic and your messages with Daniel. On the CSR wiki pages then 
> phrase to look for is "behavioral compatibility".  The "Kinds of 
> Compatibility" has more details on the topic.

> @AlanBateman So is now the time to switch this PR from Draft to Ready?

Yes. From what I can tell, moving to Draft while you worked on it didn't pause 
the Skara bots, I'm not sure why that is.

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

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

Reply via email to