-
Bug
-
Resolution: Incomplete
-
Major
-
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...