[
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