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

Reply via email to