Jurian Broertjes created NUTCH-2378:
---------------------------------------

             Summary: ChildFirst plugin classloader
                 Key: NUTCH-2378
                 URL: https://issues.apache.org/jira/browse/NUTCH-2378
             Project: Nutch
          Issue Type: Improvement
    Affects Versions: 1.13
            Reporter: Jurian Broertjes


While working on upgrading the indexer-elastic plugin from 2.x to 5.x, I ran 
into several nasty runtime dependency issues (both local and on Hadoop). After 
seeking help on the mailing list, I still was unable to resolve these issues 
and after digging further, decided to try a different plugin classloader 
strategy. 

The normal classloader delegates class loading requests to it's parent 
classloader. This can cause all sorts of nasty runtime dependency version 
conflicts (jar hell, version conflicts), since the plugin's own classloader 
gets queried last. The child-first classloader approach tries to load a class 
from the plugin's dependencies first and when unavailable, delegates to it's 
parent classloader. This fixed the issues I had.

The new approach can give runtime LinkageErrors, but these are easily 
resolvable (see the patch for a few examples)

I've tested the new loader a bit and am curious about others' findings.





--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to