Julien Le Dem created PIG-3043:
----------------------------------

             Summary: 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