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)