[ 
https://issues.apache.org/jira/browse/AVRO-4048?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

David Mollitor updated AVRO-4048:
---------------------------------
    Description: 
There are a couple of places in the code with the following:

 
{code:java}
          // The inputStream contract is evil.
          // zero "might" mean EOF. So check for 2 in a row, we will
          // infinite loop waiting for -1 with some classes others
          // spuriously will return 0 on occasion without EOF {code}
Which, is understandable that this is in place for a 'read' method. However, 
'skip' has the following contract:

 
{quote}end up skipping over some smaller number of bytes, possibly {{{}0{}}}. 
This may result from any of a number of conditions; reaching end of file before 
{{n}} bytes have been skipped is only one possibility. 
{quote}
 

[https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/InputStream.html#skip(long)]

 

There is no mention of a negative return values (EOF returns zero) and 
therefore should not be supported. There exist no unit tests today the suggest 
that this is supported. Just remove the superfluous branching logic.

  was:
There are a couple of places in the code with the following:

 
{code:java}
          // The inputStream contract is evil.
          // zero "might" mean EOF. So check for 2 in a row, we will
          // infinite loop waiting for -1 with some classes others
          // spuriously will return 0 on occasion without EOF {code}
Which, is understandable that this is in place for a 'read' method. However, 
'skip' has the following contract:

 
{quote}end up skipping over some smaller number of bytes, possibly {{{}0{}}}. 
This may result from any of a number of conditions; reaching end of file before 
{{n}} bytes have been skipped is only one possibility. 
{quote}
 

[https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/InputStream.html#skip(long)]

 

There is no mention of a negative return values (EOF returns zero) and 
therefore should not be supported. There exist no unit tests today the suggest 
that this is supported. Just remove the extra superfluous branching logic.


> Ignore Negative Return Values for InputStream Skip
> --------------------------------------------------
>
>                 Key: AVRO-4048
>                 URL: https://issues.apache.org/jira/browse/AVRO-4048
>             Project: Apache Avro
>          Issue Type: Improvement
>          Components: java
>    Affects Versions: 1.13.0
>            Reporter: David Mollitor
>            Assignee: David Mollitor
>            Priority: Minor
>
> There are a couple of places in the code with the following:
>  
> {code:java}
>           // The inputStream contract is evil.
>           // zero "might" mean EOF. So check for 2 in a row, we will
>           // infinite loop waiting for -1 with some classes others
>           // spuriously will return 0 on occasion without EOF {code}
> Which, is understandable that this is in place for a 'read' method. However, 
> 'skip' has the following contract:
>  
> {quote}end up skipping over some smaller number of bytes, possibly {{{}0{}}}. 
> This may result from any of a number of conditions; reaching end of file 
> before {{n}} bytes have been skipped is only one possibility. 
> {quote}
>  
> [https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/InputStream.html#skip(long)]
>  
> There is no mention of a negative return values (EOF returns zero) and 
> therefore should not be supported. There exist no unit tests today the 
> suggest that this is supported. Just remove the superfluous branching logic.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to