Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-3744

Remoting infrastructure / bug in Java serialization

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Incomplete
    • Icon: Major Major
    • core
    • None
    • Platform: All, OS: All

      I created a plugin that uses the SubversionCredentialProvider extension point.
      I packaged my plug-in and installed and it worked great on the Master but I'm
      getting the error below on the slaves. I read about the "Distribution
      Architecture of Hudson" on the wiki but I'm not sure how to work it into my
      plugin. Some guidance would be greatly appreicated. Thx, Brett

      Stacetrace:
      java.lang.reflect.UndeclaredThrowableException
      at hudson.scm.$Proxy7.getCredential(Unknown Source)
      at
      hudson.scm.SubversionSCM$DescriptorImpl$SVNAuthenticationProviderImpl.requestCli
      entAuthentication(SubversionSCM.java:1214)
      at
      org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthe
      ntication(DefaultSVNAuthenticationManager.java:157)
      at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request
      (HTTPConnection.java:518)
      at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request
      (HTTPConnection.java:257)
      at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request
      (HTTPConnection.java:245)
      at
      org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities
      (DAVConnection.java:454)
      at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open
      (DAVConnection.java:97)
      at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection
      (DAVRepository.java:665)
      at
      org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getLatestRevision
      (DAVRepository.java:172)
      at org.tmatesoft.svn.core.wc.SVNBasicClient.getRevisionNumber
      (SVNBasicClient.java:479)
      at org.tmatesoft.svn.core.wc.SVNBasicClient.getLocations
      (SVNBasicClient.java:848)
      at org.tmatesoft.svn.core.wc.SVNBasicClient.createRepository
      (SVNBasicClient.java:531)
      at org.tmatesoft.svn.core.wc.SVNUpdateClient.doCheckout
      (SVNUpdateClient.java:830)
      at org.tmatesoft.svn.core.wc.SVNUpdateClient.doCheckout
      (SVNUpdateClient.java:728)
      at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:547)
      at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:477)
      at hudson.FilePath$FileCallableWrapper.call(FilePath.java:1583)
      at hudson.remoting.UserRequest.perform(UserRequest.java:103)
      at hudson.remoting.UserRequest.perform(UserRequest.java:47)
      at hudson.remoting.Request$2.run(Request.java:236)
      at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
      at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
      at java.util.concurrent.FutureTask.run(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown
      Source)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      at hudson.remoting.Engine$1$1.run(Engine.java:54)
      at java.lang.Thread.run(Unknown Source)
      Caused by: java.io.IOException: Remote call failed
      at hudson.remoting.Channel.call(Channel.java:514)
      at hudson.remoting.RemoteInvocationHandler.invoke
      (RemoteInvocationHandler.java:148)
      ... 28 more
      Caused by: java.lang.ClassNotFoundException:
      com.imsi.iss.hudson.subversion.PwMatrixSubversionCredentialProvider$PwMatrixCred
      ential
      at java.net.URLClassLoader$1.run(Unknown Source)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.net.URLClassLoader.findClass(Unknown Source)
      at com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source)
      at java.lang.ClassLoader.loadClass(Unknown Source)
      at java.lang.ClassLoader.loadClass(Unknown Source)
      at java.lang.ClassLoader.loadClassInternal(Unknown Source)
      at java.lang.Class.forName0(Native Method)
      at java.lang.Class.forName(Unknown Source)
      at java.io.ObjectInputStream.resolveClass(Unknown Source)
      at hudson.remoting.ObjectInputStreamEx.resolveClass
      (ObjectInputStreamEx.java:52)
      at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
      at java.io.ObjectInputStream.readClassDesc(Unknown Source)
      at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
      at java.io.ObjectInputStream.readObject0(Unknown Source)
      at java.io.ObjectInputStream.readObject(Unknown Source)
      at hudson.remoting.UserResponse.retrieve(UserRequest.java:177)
      at hudson.remoting.Channel.call(Channel.java:510)
      ... 29 more

      Kohsuke response:
      This is a bug in the remoting infrastructure / bug in Java serialization
      — it's failing to remember that your Credential implementation is from
      another classloader.

      Now the tricky part is how to fix this...

            Unassigned Unassigned
            towler towler
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved: