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

Yu Li commented on HADOOP-8419:
-------------------------------

More details about this issue:
In IBM JDK, GZIPOutputStream class calls the deflater's end method as part of 
GZIPOutputStream.finish(), so deflater's reset can't be called after, while in 
SUN or Open JDK implementation this end method won't be called.

To work-around this issue, we need to override the finish method of 
coresponding classes which extends GZIPOutputStream, thus won't depend on 
implementation of differenct JDK. And since the needed writeTrailer, writeInt 
and writeShort all become private method in JDK6(SUN/IBM/OPEN JDK), we also 
need to add these 3 methods in the patch. 
                
> GzipCodec NPE upon reset with IBM JDK
> -------------------------------------
>
>                 Key: HADOOP-8419
>                 URL: https://issues.apache.org/jira/browse/HADOOP-8419
>             Project: Hadoop Common
>          Issue Type: Bug
>          Components: io
>    Affects Versions: 1.0.3
>            Reporter: Luke Lu
>            Assignee: Yu Li
>              Labels: gzip, ibm-jdk
>
> The GzipCodec will NPE upon reset after finish when the native zlib codec is 
> not loaded. When the native zlib is loaded the codec creates a 
> CompressorOutputStream that doesn't have the problem, otherwise, the 
> GZipCodec uses GZIPOutputStream which is extended to provide the resetState 
> method. Since IBM JDK 6 SR9 FP2 including the current JDK 6 SR10, 
> GZIPOutputStream#finish will release the underlying deflater, which causes 
> NPE upon reset. This seems to be an IBM JDK quirk as Sun JDK and OpenJDK 
> doesn't have this issue.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to