[ https://issues.apache.org/jira/browse/HADOOP-11064?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14130426#comment-14130426 ]
Chris Nauroth commented on HADOOP-11064: ---------------------------------------- After further discussion, the following is a summary of potential solutions to this problem: 1. Freeze the libhadoop.so API forever. 2. Library versioning plus maintaining a library on the servers for each supported release. 3. Bundle the .dll or .so file inside a jar somehow so that YARN / Slider can distribute it. #1. Advantages: * ??? #1. Disadvantages: * We're unable to improve libhadoop.so in the future. * There will be puzzling interactions when mixing and matching versions. "New" bugs in libhadoop.so will show up with old hadoop releases, causing confusion in bug trackers. * We don't have any way of enforcing C API stability. Jenkins doesn't check for it, most Java programmers don't know how to achieve it. * There is still no ability for applications using new Hadoop versions to make use of old libhadoop.so versions, unless we adopt an even worse compatibility policy that nothing new can be added to libhadoop.so. * Given all of the above, this option seems to be off the table. #2. Advantages: * Simple to implement. * There's already a patch that implements it. * We want libhadoop.so library versioning anyway, even if we later adopt another solution in addition to this #2. Disadvantages: * Admins using Slider / YARN will need to ensure that the appropriate versions of libhadoop are present on the server. #3. Advantages: * "Cleanest" solution, since it allows us to reuse YARN's existing distribution mechanisms. #3. Disadvantages: * There are technical challenges to bundling a library in a jar that we haven't yet tackled. Short-term, there is now agreement that the scope of this jira is to restore the 2 function signatures that were removed to unblock downstream projects. Colin plans to arrange a conference call for further discussion next week. The details will be posted here for anyone who wants to join, and we'll also call wider attention to this issue on the mailing lists. > UnsatisifedLinkError with hadoop 2.4 JARs on hadoop-2.6 due NativeCRC32 > method changes > -------------------------------------------------------------------------------------- > > Key: HADOOP-11064 > URL: https://issues.apache.org/jira/browse/HADOOP-11064 > Project: Hadoop Common > Issue Type: Bug > Components: native > Affects Versions: 2.6.0 > Environment: Hadoop 2.6 cluster, trying to run code containing hadoop > 2.4 JARs > Reporter: Steve Loughran > Assignee: Colin Patrick McCabe > Priority: Blocker > Attachments: HADOOP-11064.001.patch, HADOOP-11064.002.patch, > HADOOP-11064.003.patch > > > The private native method names and signatures in {{NativeCrc32}} were > changed in HDFS-6561 ... as a result hadoop-common-2.4 JARs get unsatisifed > link errors when they try to perform checksums. > This essentially stops Hadoop 2.4 applications running on Hadoop 2.6 unless > rebuilt and repackaged with the hadoop- 2.6 JARs -- This message was sent by Atlassian JIRA (v6.3.4#6332)