[ 
https://issues.apache.org/jira/browse/HADOOP-12677?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15072867#comment-15072867
 ] 

Laurent Goujon commented on HADOOP-12677:
-----------------------------------------

It's not about invoking InputStream.skip() but following the same behavior, as 
part of the API contract. Before your patch, DecompressorStream would also 
return the number of bytes skipped until EOF, changing it would mean 
introducing an incompatible change.

> DecompressorStream throws IndexOutOfBoundsException when calling skip(long)
> ---------------------------------------------------------------------------
>
>                 Key: HADOOP-12677
>                 URL: https://issues.apache.org/jira/browse/HADOOP-12677
>             Project: Hadoop Common
>          Issue Type: Bug
>          Components: io
>    Affects Versions: 2.4.0, 2.6.0, 3.0.0
>            Reporter: Laurent Goujon
>            Assignee: Wei-Chiu Chuang
>         Attachments: HADOOP-12677.001.patch, HADOOP-12677.002.patch
>
>
> DecompressorStream.skip(long) throws an IndexOutOfBoundException when using a 
> long bigger than Integer.MAX_VALUE
> This is because of this cast from long to int: 
> https://github.com/apache/hadoop-common/blob/HADOOP-3628/src/core/org/apache/hadoop/io/compress/DecompressorStream.java#L125
> The fix is probably to do the cast after applying Math.min: in that case, it 
> should not be an issue since it should not be bigger than the buffer size 
> (512)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to