You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-issues@hadoop.apache.org by "Chris Nauroth (JIRA)" <ji...@apache.org> on 2015/12/17 00:04:47 UTC

[jira] [Commented] (HADOOP-11127) Improve versioning and compatibility support in native library for downstream hadoop-common users.

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

Chris Nauroth commented on HADOOP-11127:
----------------------------------------

I've done some more thinking about this, and I'm now on board with version-stamping the library names.  I'd like us to proceed with that as the scope for this JIRA.

Version-stamping the libraries alone is an incomplete solution because of the issues I raised in my earlier comments.  However, I believe version-stamping the libraries is a pre-requisite for any more complete solution, such as bundling the native code into the jar.

There are a few remaining requirements though that were not addressed by the earlier proposals and patches:

# Fallback logic should make a best effort attempt to load a possibly compatible library if an exact match is not available.  For example, assuming hadoop-common-2.8.3.jar, it should attempt to load, in order, libhadoop-2.8.3.so, libhadoop-2.8.2.so, libhadoop-2.8.1.so, libhadoop-2.8.0.so, and finally libhadoop.so as the ultimate fallback.  This would help mitigate the deficiencies I described earlier when server-side deployment falls behind client-side upgrades.  A client who decides to upgrade form hadoop-common-2.8.2.jar to hadoop-common-2.8.3.jar should not suddenly see their application break because the library loading logic went all the way back to the old libhadoop.so.
# The solution must cover both *nix (libhadoop.so) and Windows (hadoop.dll and winutils.exe) completely.
# Let's review with someone from BigTop to make sure the change wouldn't have unintended consequences for rpm/deb packaging.

> Improve versioning and compatibility support in native library for downstream hadoop-common users.
> --------------------------------------------------------------------------------------------------
>
>                 Key: HADOOP-11127
>                 URL: https://issues.apache.org/jira/browse/HADOOP-11127
>             Project: Hadoop Common
>          Issue Type: Sub-task
>          Components: native
>            Reporter: Chris Nauroth
>            Assignee: Alan Burlison
>         Attachments: HADOOP-11064.003.patch, proposal.01.txt
>
>
> There is no compatibility policy enforced on the JNI function signatures implemented in the native library.  This library typically is deployed to all nodes in a cluster, built from a specific source code version.  However, downstream applications that want to run in that cluster might choose to bundle a hadoop-common jar at a different version.  Since there is no compatibility policy, this can cause link errors at runtime when the native function signatures expected by hadoop-common.jar do not exist in libhadoop.so/hadoop.dll.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)