You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@accumulo.apache.org by "Josh Elser (JIRA)" <ji...@apache.org> on 2012/08/08 03:53:09 UTC

[jira] [Created] (ACCUMULO-721) Reloading of lib/ext classloader causes LinkageError

Josh Elser created ACCUMULO-721:
-----------------------------------

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


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

        

[jira] [Updated] (ACCUMULO-721) Reloading of lib/ext classloader causes LinkageError

Posted by "Christopher Tubbs (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/ACCUMULO-721?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Christopher Tubbs updated ACCUMULO-721:
---------------------------------------

    Fix Version/s: 1.5.0
    
> 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
>            Reporter: Josh Elser
>            Assignee: Keith Turner
>             Fix For: 1.5.0
>
>         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
For more information on JIRA, see: http://www.atlassian.com/software/jira

[jira] [Updated] (ACCUMULO-721) Reloading of lib/ext classloader causes LinkageError

Posted by "Christopher Tubbs (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/ACCUMULO-721?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Christopher Tubbs updated ACCUMULO-721:
---------------------------------------

    Affects Version/s:     (was: 1.5.0)
    
> 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
>            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
For more information on JIRA, see: http://www.atlassian.com/software/jira

[jira] [Updated] (ACCUMULO-721) Reloading of lib/ext classloader causes LinkageError

Posted by "Josh Elser (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/ACCUMULO-721?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Josh Elser updated ACCUMULO-721:
--------------------------------

    Affects Version/s: 1.5.0
    
> 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
For more information on JIRA, see: http://www.atlassian.com/software/jira

[jira] [Commented] (ACCUMULO-721) Reloading of lib/ext classloader causes LinkageError

Posted by "Josh Elser (JIRA)" <ji...@apache.org>.
    [ 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

        

[jira] [Commented] (ACCUMULO-721) Reloading of lib/ext classloader causes LinkageError

Posted by "Christopher Tubbs (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/ACCUMULO-721?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13450255#comment-13450255 ] 

Christopher Tubbs commented on ACCUMULO-721:
--------------------------------------------

1.5.0 isn't a released version. It can't have things wrong with it because it doesn't technically exist (yet). If the version(s) affected are only current working branches, an "affected version" tag isn't necessary, and might be confusing. If older, released versions are affected by this bug, that would be useful to tag for documentation/search, even if we don't fix it until 1.5.0.

At least, that's what I seem to understand is a reasonable thing to do from talking to Billie and Keith. Maybe I'm wrong?
                
> 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
>            Reporter: Josh Elser
>            Assignee: Keith Turner
>             Fix For: 1.5.0
>
>         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
For more information on JIRA, see: http://www.atlassian.com/software/jira

[jira] [Updated] (ACCUMULO-721) Reloading of lib/ext classloader causes LinkageError

Posted by "Josh Elser (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/ACCUMULO-721?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Josh Elser updated ACCUMULO-721:
--------------------------------

    Attachment: ACCUMULO-721-tserver.debug.log
    
> 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-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

        

[jira] [Commented] (ACCUMULO-721) Reloading of lib/ext classloader causes LinkageError

Posted by "Christopher Tubbs (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/ACCUMULO-721?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13450244#comment-13450244 ] 

Christopher Tubbs commented on ACCUMULO-721:
--------------------------------------------

Which released versions are affected by this bug?
                
> 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
>            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
For more information on JIRA, see: http://www.atlassian.com/software/jira

[jira] [Updated] (ACCUMULO-721) Reloading of lib/ext classloader causes LinkageError

Posted by "Christopher Tubbs (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/ACCUMULO-721?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Christopher Tubbs updated ACCUMULO-721:
---------------------------------------

    Affects Version/s:     (was: 1.5.0)
    
> 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
>            Reporter: Josh Elser
>            Assignee: Keith Turner
>             Fix For: 1.5.0
>
>         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
For more information on JIRA, see: http://www.atlassian.com/software/jira

[jira] [Updated] (ACCUMULO-721) Reloading of lib/ext classloader causes LinkageError

Posted by "Josh Elser (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/ACCUMULO-721?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Josh Elser updated ACCUMULO-721:
--------------------------------

    Attachment: ACCUMULO-721-classpath
    
> 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