[ 
https://issues.apache.org/jira/browse/PIG-3043?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13494224#comment-13494224
 ] 

Julien Le Dem commented on PIG-3043:
------------------------------------

I tried the Classloader in the backend in the past and ended up reverting it 
because of similar issues to the one described in this ticket. For example, a 
Loader (in a registered jar) not seeing files from the registered jar because 
the Configuration object uses getResourceAsStream on its own classloader. 
Having 2 classloaders where there was 1 has side effects.
see: https://issues.apache.org/jira/browse/PIG-2318
                
> Modify the UrlClassloader in PigContext so that classes from the same 
> classloader are used first instead of the parent
> ----------------------------------------------------------------------------------------------------------------------
>
>                 Key: PIG-3043
>                 URL: https://issues.apache.org/jira/browse/PIG-3043
>             Project: Pig
>          Issue Type: Improvement
>            Reporter: Julien Le Dem
>
> This behavior would be similar to what application servers do (Tomcat, Jetty, 
> ...) and would allow classes from registered jars to use their own version of 
> a class. It also avoid problems when adding a jar to pig break libraries that 
> make use of dynamic class lookup.
> example of a common pattern that regularly is broken by the current mechanism:
> register lib.jar
> register my.jar
> define blah as my.UDF('my.Implementation')
> my.UDF is in my.jar and uses classes in lib.jar that use Class.forName() to 
> resolve my.Implementation. It works fine until lib.jar is added as a 
> dependency of pig or in the PIG_CLASSPATH. Then classes in lib.jar do not see 
> the classes in registered jars.
> I thinks that overriding loadClass(String name, boolean resolve) would allow 
> doing that.
> We should make an exception for anything in org.apache.pig just like 
> servlet.jar is excluded in app servers.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to