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

Colin Patrick McCabe updated HADOOP-8756:
-----------------------------------------

    Attachment: HADOOP-8756.002.patch

* remove HADOOP_RUNAS_HOME (runAs has been removed)

* remove SnappyCodec.java.  Instead, load the native code from 
SnappyCompressor.java and SnappyDecompressor.java.  This is similar to the way 
the zlib stuff works now.

* If we try to instantiate SnappyCodec, but snappy is not loaded, throw an 
exception.  Formerly, we might get undefined behavior like segfaults in this 
case.

* Be more helpful about why snappy could not be loaded: was it because the 
build was compiled without snappy?  Or some other reason found in the exception 
thrown from {{SnappyDecompressor#initIDs}} or  {{SnappyCompressor#initIDs}}?

* We don't need to call {{System.loadLibrary("snappy")}}.  It's irrelevant 
because libsnappy is not a JNI library.  Again, zlib shows how this should be 
done: just use {{dlopen}}, not {{System.loadLibrary}}.  Note that calliing 
{{System.loadLibrary}} does *not* make the symbols visible to {{libhadoop.so}} 
because the JVM does not use {{RTLD_GLOBAL}}. 
                
> libsnappy loader issues
> -----------------------
>
>                 Key: HADOOP-8756
>                 URL: https://issues.apache.org/jira/browse/HADOOP-8756
>             Project: Hadoop Common
>          Issue Type: Bug
>          Components: native
>    Affects Versions: 2.2.0-alpha
>            Reporter: Colin Patrick McCabe
>            Assignee: Colin Patrick McCabe
>            Priority: Minor
>         Attachments: HADOOP-8756.002.patch
>
>
> We use {{System.loadLibrary("snappy")}} from the Java side.  However in 
> libhadoop, we use {{dlopen}} to open libsnappy.so dynamically.  
> System.loadLibrary uses {{java.library.path}} to resolve libraries, and 
> {{dlopen}} uses {{LD_LIBRARY_PATH}} and the system paths to resolve 
> libraries.  Because of this, the two library loading functions can be at odds.
> We should fix this so we only load the library once, preferably using the 
> standard Java {{java.library.path}}.
> We should also log the search path(s) we use for {{libsnappy.so}} when 
> loading fails, so that it's easier to diagnose configuration issues.

--
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