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

L. C. Hsieh updated HADOOP-17891:
---------------------------------
    Description: 
lz4-java is a provided dependency. So in the shaded Hadoop libraries, e.g. 
hadoop-client-api, if we don't exclude lz4 dependency, the downstream will 
still see the exception even they include lz4 dependency.
{code:java}
[info]   Cause: java.lang.ClassNotFoundException: 
org.apache.hadoop.shaded.net.jpountz.lz4.LZ4Factory
[info]   at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
[info]   at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
[info]   at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
[info]   at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
[info]   at 
org.apache.hadoop.io.compress.lz4.Lz4Compressor.<init>(Lz4Compressor.java:66)
[info]   at 
org.apache.hadoop.io.compress.Lz4Codec.createCompressor(Lz4Codec.java:119)
[info]   at 
org.apache.hadoop.io.compress.CodecPool.getCompressor(CodecPool.java:152)
[info]   at 
org.apache.hadoop.io.compress.CodecPool.getCompressor(CodecPool.java:168)
 {code}

Currently snappy-java is included and relocated in Hadoop shaded client 
libraries. But as it includes native methods, it should not be relocated too 
due to JNI method resolution. The downstream will see the exception:

{code}
[info]   Cause: java.lang.UnsatisfiedLinkError: 
org.apache.hadoop.shaded.org.xerial.snappy.SnappyNative.rawCompress(Ljava/nio/ByteBuffer;IILjava/nio/ByteBuffer;I)I
[info]   at 
org.apache.hadoop.shaded.org.xerial.snappy.SnappyNative.rawCompress(Native 
Method)                                                                         
                        
[info]   at 
org.apache.hadoop.shaded.org.xerial.snappy.Snappy.compress(Snappy.java:151)     
                                                                                
                   
[info]   at 
org.apache.hadoop.io.compress.snappy.SnappyCompressor.compressDirectBuf(SnappyCompressor.java:282)
[info]   at 
org.apache.hadoop.io.compress.snappy.SnappyCompressor.compress(SnappyCompressor.java:210)

{code}


  was:
Lz4 is a provided dependency. So in the shaded Hadoop libraries, e.g. 
hadoop-client-api, if we don't exclude lz4 dependency, the downstream will 
still see the exception even they include lz4 dependency.
{code:java}
[info]   Cause: java.lang.ClassNotFoundException: 
org.apache.hadoop.shaded.net.jpountz.lz4.LZ4Factory
[info]   at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
[info]   at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
[info]   at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
[info]   at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
[info]   at 
org.apache.hadoop.io.compress.lz4.Lz4Compressor.<init>(Lz4Compressor.java:66)
[info]   at 
org.apache.hadoop.io.compress.Lz4Codec.createCompressor(Lz4Codec.java:119)
[info]   at 
org.apache.hadoop.io.compress.CodecPool.getCompressor(CodecPool.java:152)
[info]   at 
org.apache.hadoop.io.compress.CodecPool.getCompressor(CodecPool.java:168)
 {code}


> lz4-java and snappy-java should be excluded from relocation in shaded Hadoop 
> libraries
> --------------------------------------------------------------------------------------
>
>                 Key: HADOOP-17891
>                 URL: https://issues.apache.org/jira/browse/HADOOP-17891
>             Project: Hadoop Common
>          Issue Type: Bug
>            Reporter: L. C. Hsieh
>            Priority: Major
>              Labels: pull-request-available
>          Time Spent: 1h 10m
>  Remaining Estimate: 0h
>
> lz4-java is a provided dependency. So in the shaded Hadoop libraries, e.g. 
> hadoop-client-api, if we don't exclude lz4 dependency, the downstream will 
> still see the exception even they include lz4 dependency.
> {code:java}
> [info]   Cause: java.lang.ClassNotFoundException: 
> org.apache.hadoop.shaded.net.jpountz.lz4.LZ4Factory
> [info]   at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
> [info]   at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
> [info]   at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
> [info]   at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
> [info]   at 
> org.apache.hadoop.io.compress.lz4.Lz4Compressor.<init>(Lz4Compressor.java:66)
> [info]   at 
> org.apache.hadoop.io.compress.Lz4Codec.createCompressor(Lz4Codec.java:119)
> [info]   at 
> org.apache.hadoop.io.compress.CodecPool.getCompressor(CodecPool.java:152)
> [info]   at 
> org.apache.hadoop.io.compress.CodecPool.getCompressor(CodecPool.java:168)
>  {code}
> Currently snappy-java is included and relocated in Hadoop shaded client 
> libraries. But as it includes native methods, it should not be relocated too 
> due to JNI method resolution. The downstream will see the exception:
> {code}
> [info]   Cause: java.lang.UnsatisfiedLinkError: 
> org.apache.hadoop.shaded.org.xerial.snappy.SnappyNative.rawCompress(Ljava/nio/ByteBuffer;IILjava/nio/ByteBuffer;I)I
> [info]   at 
> org.apache.hadoop.shaded.org.xerial.snappy.SnappyNative.rawCompress(Native 
> Method)                                                                       
>                           
> [info]   at 
> org.apache.hadoop.shaded.org.xerial.snappy.Snappy.compress(Snappy.java:151)   
>                                                                               
>                        
> [info]   at 
> org.apache.hadoop.io.compress.snappy.SnappyCompressor.compressDirectBuf(SnappyCompressor.java:282)
> [info]   at 
> org.apache.hadoop.io.compress.snappy.SnappyCompressor.compress(SnappyCompressor.java:210)
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to