Vladimir Ozerov commented on IGNITE-3929:

Looks like we can employ the following mechanism:
1) Still use {{HadoopConfiguration.getNativeLibraryNames()}} method.
2) Add well-known Hadoop (and any other distribution) library names.
3) If name is absolute, then use {{System.load}}. If relative - 
4) Try loading libraries in static initializer of {{HadoopClassLoader}}. 
5) All user-defined libs are considered mandatory, while our libs may be either 
mandatory or optional. E.g. {{hadoop}} is optional library.
6) Link loaded libraries from parent classloader to current classloader.

> Hadoop: Fix native libraries loading mechanism.
> -----------------------------------------------
>                 Key: IGNITE-3929
>                 URL: https://issues.apache.org/jira/browse/IGNITE-3929
>             Project: Ignite
>          Issue Type: Sub-task
>          Components: hadoop
>    Affects Versions: 1.7
>            Reporter: Vladimir Ozerov
>            Assignee: Ivan Veselovsky
>             Fix For: 1.8
> Currently we do the following to load native libraries:
> 1) Ask parent class loader (normally it is app class loader) to load 
> {{org.apache.hadoop.util.NativeCodeLoader}} class. It will force loading of 
> relevant Hadoop native libraries.
> 2) Then hack into parent class loader internals, find loaded library, and 
> wire it up to current classloader.
> This approach will not work any more because parent classloader normally will 
> not have Hadoop in classpath.
> We should provide alternative solution.

This message was sent by Atlassian JIRA

Reply via email to