accumulo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Josh Elser (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (ACCUMULO-721) Reloading of lib/ext classloader causes LinkageError
Date Wed, 08 Aug 2012 02:23:10 GMT

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

Josh Elser commented on ACCUMULO-721:
-------------------------------------

For those with sharp eyes, two things that should stand out:

In the attached ACCUMULO-721-tserver.debug.log, you'll notice that it lists commons-lang-2.4.jar
in lib/ext which is also in lib according to the attached classpath. I realized this, retested,
and it made no difference. I'm being lazy.

Second, you might notice the guava-r09-jarjar.jar in /opt/hadoop/current/lib. This was rebundled
by Hadoop, and while it is an old copy of guava, the package names are all prefixed with /org/apache/hadoop/thirdparty.
So, unless the classloader isn't properly using full package name, the point should be moot.

If someone is curious enough to re-test themselves, I'd be happy to throw the actual code
up. I was working it for another ticket anyways...
                
> Reloading of lib/ext classloader causes LinkageError
> ----------------------------------------------------
>
>                 Key: ACCUMULO-721
>                 URL: https://issues.apache.org/jira/browse/ACCUMULO-721
>             Project: Accumulo
>          Issue Type: Bug
>          Components: tserver
>    Affects Versions: 1.5.0
>            Reporter: Josh Elser
>            Assignee: Keith Turner
>         Attachments: ACCUMULO-721-classpath, ACCUMULO-721-tserver.debug.log
>
>
> I was writing an iterator that takes advantage of some classes in Google's guava-libraries.
I placed my jar and the guava-13.0-rc2.jar into lib/ext.
> I then ran a simple Java class which opened a Scanner to a table with my customer Iterator
in Eclipse. The first attempt succeeded. I then changed my iterator, recompiled the jar, and
placed it in lib/ext. The AccumuloClassLoader message said it picked up the changes. Then,
trying to run my class in the same manner, I got a java.lang.LinkageError relating to the
classloader having two different Class objects for a class defined in the guava jar (which
hadn't changed).
> Moving the guava jar from lib/ext to lib/ and retrying this experiment did not net the
same LinkageError.
> I'll attach full stack traces and the output of `accumulo classpath`

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message