Add handlings for classes which are available in Thread.currentThread().getContextClassLoader()
#785
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
druid.io jumps through some nasty hoops to try and isolate hadoop classes. Part of this is NOT including the hadoop jars in the system classpath, but creating a separate URL class loader which isolates the hadoop class handling. Unfortunately this causes
getDeclaredMethods()
to puke and die since the originalcls
or_class
(loaded through the system classloader) may have methods which use some of the hadoop classes, and the context class loader is not taken into account when resolution of the declared methods proceeds.This proposed patch simply watches for the failure case, and tries to load the class from the context class loader instead.
Another potential solution would be to load the
cls
or_class
from the context class loader way before it reaches this point, but I am not fluent enough in jackson-databind to make such a change.