[
https://issues.apache.org/jira/browse/HADOOP-12677?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Wei-Chiu Chuang updated HADOOP-12677:
-------------------------------------
Attachment: HADOOP-12677.002.patch
[~laurentgo]
Thank you for the comments and reviews!
I have posted patch #2 to address comment#2.
Regarding comment#1, even though DecompressorStream inherits InputStream, its
skip() implementation does not call InputStream.skip(). Instead, its internal
implementation uses InputStream.read(), which returns -1 if end of stream. If
InputStream.end() returns -1, an EOFException is thrown.
> 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)