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

Libin Qin updated FLINK-32509:
------------------------------
    Description: 
The implementation of  InputStream does not return -1  for eof.

The java doc of InputStream said "The skip method may, for a variety of 
reasons, end up skipping over some smaller number of bytes, possibly 0." 

For FileInputStream, it allows skipping any number of bytes past the end of the 
file.

So the method "seek" of InputStreamFSInputWrapper will cause infinite loop if 
desired exceed end of file
 
I reproduced with following case
 
{code:java}
byte[] bytes = "flink".getBytes();

try (InputStream inputStream = new ByteArrayInputStream(bytes)){ 
    InputStreamFSInputWrapper wrapper = new       
InputStreamFSInputWrapper(inputStream); 
    wrapper.seek(20); 
} {code}


I  found an issue of commons-io talks about the problem of skip
https://issues.apache.org/jira/browse/IO-203

 

  was:
The implementation of  InputStream does not return -1  for eof.

The java doc of InputStream said "The skip method may, for a variety of 
reasons, end up skipping over some smaller number of bytes, possibly 0." 

For FileInputStream, it allows skipping any number of bytes past the end of the 
file.

So the method "seek" of InputStreamFSInputWrapper will cause infinite loop if 
desired exceed end of file
 
I reproduced with following case
 
```java
byte[] bytes = "flink".getBytes();
try (InputStream inputStream = new ByteArrayInputStream(bytes)) {
InputStreamFSInputWrapper wrapper = new InputStreamFSInputWrapper(inputStream);
wrapper.seek(20);
}
```
I  found an issue of commons-io talks about the problem of skip
https://issues.apache.org/jira/browse/IO-203

 


> avoid using skip in InputStreamFSInputWrapper.seek
> --------------------------------------------------
>
>                 Key: FLINK-32509
>                 URL: https://issues.apache.org/jira/browse/FLINK-32509
>             Project: Flink
>          Issue Type: Bug
>          Components: API / Core
>    Affects Versions: 1.18.0
>            Reporter: Libin Qin
>            Priority: Major
>
> The implementation of  InputStream does not return -1  for eof.
> The java doc of InputStream said "The skip method may, for a variety of 
> reasons, end up skipping over some smaller number of bytes, possibly 0." 
> For FileInputStream, it allows skipping any number of bytes past the end of 
> the file.
> So the method "seek" of InputStreamFSInputWrapper will cause infinite loop if 
> desired exceed end of file
>  
> I reproduced with following case
>  
> {code:java}
> byte[] bytes = "flink".getBytes();
> try (InputStream inputStream = new ByteArrayInputStream(bytes)){ 
>     InputStreamFSInputWrapper wrapper = new       
> InputStreamFSInputWrapper(inputStream); 
>     wrapper.seek(20); 
> } {code}
> I  found an issue of commons-io talks about the problem of skip
> https://issues.apache.org/jira/browse/IO-203
>  



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

Reply via email to