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

svn+ssh on slave node causes org.tmatesoft.svn.core.SVNCancelException

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Major Major
    • remoting
    • None
    • Platform: All, OS: All

      Using

      • Hudson 1.101
      • SSH to launch a slave agent (Linux master, Windows/Cygwin slave)
      • the svn+ssh protocol for a Subversion repository
      • credentials with a username and a private keyfile (no passphrase)

      The build succeeds on a master node, however, an exception occurs when it is
      tied to a slave node:

      java.lang.NullPointerException:
      at
      hudson.scm.SubversionSCM$DescriptorImpl$SshPublicKeyCredential.getKeyFile(SubversionSCM.java:598)
      at
      hudson.scm.SubversionSCM$DescriptorImpl$SshPublicKeyCredential.createSVNAuthentication(SubversionSCM.java:619)
      at
      hudson.scm.SubversionSCM$DescriptorImpl$SshPublicKeyCredential.createSVNAuthentication(SubversionSCM.java:568)
      at
      hudson.scm.SubversionSCM$DescriptorImpl$SVNAuthenticationProviderImpl.requestClientAuthentication(SubversionSCM.java:661)
      at
      org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:148)
      at
      org.tmatesoft.svn.core.internal.io.svn.SVNGanymedConnector.open(SVNGanymedConnector.java:62)
      at
      org.tmatesoft.svn.core.internal.io.svn.SVNConnection.open(SVNConnection.java:59)
      at
      org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.openConnection(SVNRepositoryImpl.java:999)
      at
      org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.getLatestRevision(SVNRepositoryImpl.java:136)
      at
      org.tmatesoft.svn.core.wc.SVNBasicClient.getRevisionNumber(SVNBasicClient.java:344)
      at
      org.tmatesoft.svn.core.wc.SVNBasicClient.getLocations(SVNBasicClient.java:458)
      at
      org.tmatesoft.svn.core.wc.SVNBasicClient.createRepository(SVNBasicClient.java:414)
      at
      org.tmatesoft.svn.core.wc.SVNBasicClient.createRepository(SVNBasicClient.java:378)
      at
      org.tmatesoft.svn.core.wc.SVNUpdateClient.doCheckout(SVNUpdateClient.java:305)
      at hudson.scm.SubversionSCM$1.invoke(SubversionSCM.java:304)
      at hudson.scm.SubversionSCM$1.invoke(SubversionSCM.java:277)
      at hudson.FilePath$FileCallableWrapper.call(FilePath.java:904)
      at hudson.remoting.UserRequest.perform(UserRequest.java:57)
      at hudson.remoting.UserRequest.perform(UserRequest.java:22)
      at hudson.remoting.Request$2.run(Request.java:178)
      at
      java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
      at
      java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
      at java.lang.Thread.run(Thread.java:595)

          [JENKINS-474] svn+ssh on slave node causes org.tmatesoft.svn.core.SVNCancelException

          I think I fixed this for 1.102, but I don't have an environment to verify the fix.

          Can you try the snapshot build and see if the fix is really working or not?

          Kohsuke Kawaguchi added a comment - I think I fixed this for 1.102, but I don't have an environment to verify the fix. Can you try the snapshot build and see if the fix is really working or not?

          Assuming a fix. If anyone sees any problem please reopen.

          Kohsuke Kawaguchi added a comment - Assuming a fix. If anyone sees any problem please reopen.

          kianwin added a comment -

          Hi Kohsuke,

          Sorry for not being able to test the fix earlier.

          I have tested both 1.102 and 1.103, and neither seems to fix the bug.

          Immediately after upgrading (and probably the first time a credential is
          entered, but I did not verify), I get:

          Building remotely on ...
          FATAL: remote file operation failed
          hudson.util.IOException2: remote file operation failed
          at hudson.FilePath.act(FilePath.java:234)
          at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:278)
          at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:236)
          at hudson.model.AbstractProject.checkout(AbstractProject.java:306)
          at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:152)
          at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:118)
          at hudson.model.Run.run(Run.java:559)
          at hudson.model.Build.run(Build.java:101)
          at hudson.model.Executor.run(Executor.java:61)
          Caused by: java.io.IOException: Remote call failed
          at hudson.remoting.Channel.call(Channel.java:249)
          at hudson.FilePath.act(FilePath.java:231)
          ... 8 more
          Caused by: java.lang.NoClassDefFoundError: hudson/remoting/ProxyOutputStream$Flush
          at hudson.remoting.RemoteOutputStream.readObject(RemoteOutputStream.java:65)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
          at
          sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
          at java.lang.reflect.Method.invoke(Method.java:585)
          at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:946)
          at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1809)
          at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
          at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
          at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
          at hudson.model.StreamBuildListener.readObject(StreamBuildListener.java:65)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
          at
          sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
          at java.lang.reflect.Method.invoke(Method.java:585)
          at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:946)
          at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1809)
          at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
          at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
          at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908)
          at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832)
          at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
          at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
          at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908)
          at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832)
          at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
          at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)

          Subsequently, and even after restarting the slave launcher and/or hudson, I get
          the less descriptive:

          Building remotely on ...
          Checking out svn+ssh://...

          ERROR: Failed to check out svn+ssh://...

          org.tmatesoft.svn.core.SVNCancelException: svn: authentication cancelled
          at
          org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:30)
          at
          org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:155)
          at
          org.tmatesoft.svn.core.internal.io.svn.SVNGanymedConnector.open(SVNGanymedConnector.java:89)
          at org.tmatesoft.svn.core.internal.io.svn.SVNConnection.open(SVNConnection.java:59)
          at
          org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.openConnection(SVNRepositoryImpl.java:999)
          at
          org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.getLatestRevision(SVNRepositoryImpl.java:136)
          at
          org.tmatesoft.svn.core.wc.SVNBasicClient.getRevisionNumber(SVNBasicClient.java:344)
          at org.tmatesoft.svn.core.wc.SVNBasicClient.getLocations(SVNBasicClient.java:458)
          at
          org.tmatesoft.svn.core.wc.SVNBasicClient.createRepository(SVNBasicClient.java:414)
          at
          org.tmatesoft.svn.core.wc.SVNBasicClient.createRepository(SVNBasicClient.java:378)
          at org.tmatesoft.svn.core.wc.SVNUpdateClient.doCheckout(SVNUpdateClient.java:305)
          at hudson.scm.SubversionSCM$1.invoke(SubversionSCM.java:305)
          at hudson.scm.SubversionSCM$1.invoke(SubversionSCM.java:278)
          at hudson.FilePath$FileCallableWrapper.call(FilePath.java:904)
          at hudson.remoting.UserRequest.perform(UserRequest.java:57)
          at hudson.remoting.UserRequest.perform(UserRequest.java:22)
          at hudson.remoting.Request$2.run(Request.java:178)
          at
          java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
          at java.lang.Thread.run(Thread.java:595)

          Any ideas?

          ps. I will be available to help test subsequent fixes.

          Thanks!

          kianwin added a comment - Hi Kohsuke, Sorry for not being able to test the fix earlier. I have tested both 1.102 and 1.103, and neither seems to fix the bug. Immediately after upgrading (and probably the first time a credential is entered, but I did not verify), I get: Building remotely on ... FATAL: remote file operation failed hudson.util.IOException2: remote file operation failed at hudson.FilePath.act(FilePath.java:234) at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:278) at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:236) at hudson.model.AbstractProject.checkout(AbstractProject.java:306) at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:152) at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:118) at hudson.model.Run.run(Run.java:559) at hudson.model.Build.run(Build.java:101) at hudson.model.Executor.run(Executor.java:61) Caused by: java.io.IOException: Remote call failed at hudson.remoting.Channel.call(Channel.java:249) at hudson.FilePath.act(FilePath.java:231) ... 8 more Caused by: java.lang.NoClassDefFoundError: hudson/remoting/ProxyOutputStream$Flush at hudson.remoting.RemoteOutputStream.readObject(RemoteOutputStream.java:65) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:946) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1809) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348) at hudson.model.StreamBuildListener.readObject(StreamBuildListener.java:65) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:946) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1809) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305) Subsequently, and even after restarting the slave launcher and/or hudson, I get the less descriptive: Building remotely on ... Checking out svn+ssh://... ERROR: Failed to check out svn+ssh://... org.tmatesoft.svn.core.SVNCancelException: svn: authentication cancelled at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:30) at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:155) at org.tmatesoft.svn.core.internal.io.svn.SVNGanymedConnector.open(SVNGanymedConnector.java:89) at org.tmatesoft.svn.core.internal.io.svn.SVNConnection.open(SVNConnection.java:59) at org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.openConnection(SVNRepositoryImpl.java:999) at org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.getLatestRevision(SVNRepositoryImpl.java:136) at org.tmatesoft.svn.core.wc.SVNBasicClient.getRevisionNumber(SVNBasicClient.java:344) at org.tmatesoft.svn.core.wc.SVNBasicClient.getLocations(SVNBasicClient.java:458) at org.tmatesoft.svn.core.wc.SVNBasicClient.createRepository(SVNBasicClient.java:414) at org.tmatesoft.svn.core.wc.SVNBasicClient.createRepository(SVNBasicClient.java:378) at org.tmatesoft.svn.core.wc.SVNUpdateClient.doCheckout(SVNUpdateClient.java:305) at hudson.scm.SubversionSCM$1.invoke(SubversionSCM.java:305) at hudson.scm.SubversionSCM$1.invoke(SubversionSCM.java:278) at hudson.FilePath$FileCallableWrapper.call(FilePath.java:904) at hudson.remoting.UserRequest.perform(UserRequest.java:57) at hudson.remoting.UserRequest.perform(UserRequest.java:22) at hudson.remoting.Request$2.run(Request.java:178) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) at java.lang.Thread.run(Thread.java:595) Any ideas? ps. I will be available to help test subsequent fixes. Thanks!

          kianwin added a comment -

          Minor addendum. Initially, I suspected that this was because the slave node has
          an outdated slave.jar, but further inspection of the pom.xml within verified
          that I was using 1.102 and 1.103 respectively.

          kianwin added a comment - Minor addendum. Initially, I suspected that this was because the slave node has an outdated slave.jar, but further inspection of the pom.xml within verified that I was using 1.102 and 1.103 respectively.

          Thank you. I wonder if there's any error left in the system log. This part of
          SVNKit makes it difficult for me to propagate an error.

          I'll use RuntimeException to bypass this, in the mean time.

          Kohsuke Kawaguchi added a comment - Thank you. I wonder if there's any error left in the system log. This part of SVNKit makes it difficult for me to propagate an error. I'll use RuntimeException to bypass this, in the mean time.

          kianwin added a comment -

          Updating the bug report on 1.104

          Summary:
          The IOException no longer occurs, but the SVNCancelException still does.

          Console output:
          started
          Building remotely on slave.hostname
          Checking out a fresh workspace because Hudson failed to detect the current
          workspace \cygwin\home\hudson-slave\workspace\debug-remote-svn-ssh\.
          ERROR: svn: Path '\cygwin\home\hudson-slave\workspace\debug-remote-svn-ssh\.'
          ends in '.', which is unsupported for this operation
          org.tmatesoft.svn.core.SVNException: svn: Path
          '\cygwin\home\hudson-slave\workspace\debug-remote-svn-ssh\.' ends in '.', which
          is unsupported for this operation
          at
          org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:49)
          at
          org.tmatesoft.svn.core.internal.wc.admin.SVNWCAccess.probe(SVNWCAccess.java:642)
          at
          org.tmatesoft.svn.core.internal.wc.admin.SVNWCAccess.probeOpen(SVNWCAccess.java:262)
          at org.tmatesoft.svn.core.wc.SVNWCClient.doInfo(SVNWCClient.java:1817)
          at org.tmatesoft.svn.core.wc.SVNWCClient.doInfo(SVNWCClient.java:1754)
          at org.tmatesoft.svn.core.wc.SVNWCClient.doInfo(SVNWCClient.java:2108)
          at hudson.scm.SubversionSCM.parseSvnInfo(SubversionSCM.java:366)
          at hudson.scm.SubversionSCM.access$000(SubversionSCM.java:74)
          at hudson.scm.SubversionSCM$3.invoke(SubversionSCM.java:451)
          at hudson.scm.SubversionSCM$3.invoke(SubversionSCM.java:438)
          at hudson.FilePath$FileCallableWrapper.call(FilePath.java:904)
          at hudson.remoting.UserRequest.perform(UserRequest.java:57)
          at hudson.remoting.UserRequest.perform(UserRequest.java:22)
          at hudson.remoting.Request$2.run(Request.java:178)
          at
          java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
          at
          java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
          at java.lang.Thread.run(Thread.java:595)

          Checking out svn+ssh://...
          ERROR: Failed to check out svn+ssh://...
          org.tmatesoft.svn.core.SVNCancelException: svn: authentication cancelled
          at
          org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:30)
          at
          org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:155)
          at
          org.tmatesoft.svn.core.internal.io.svn.SVNGanymedConnector.open(SVNGanymedConnector.java:89)
          at
          org.tmatesoft.svn.core.internal.io.svn.SVNConnection.open(SVNConnection.java:59)
          at
          org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.openConnection(SVNRepositoryImpl.java:999)
          at
          org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.getLatestRevision(SVNRepositoryImpl.java:136)
          at
          org.tmatesoft.svn.core.wc.SVNBasicClient.getRevisionNumber(SVNBasicClient.java:344)
          at
          org.tmatesoft.svn.core.wc.SVNBasicClient.getLocations(SVNBasicClient.java:458)
          at
          org.tmatesoft.svn.core.wc.SVNBasicClient.createRepository(SVNBasicClient.java:414)
          at
          org.tmatesoft.svn.core.wc.SVNBasicClient.createRepository(SVNBasicClient.java:378)
          at
          org.tmatesoft.svn.core.wc.SVNUpdateClient.doCheckout(SVNUpdateClient.java:305)
          at hudson.scm.SubversionSCM$1.invoke(SubversionSCM.java:305)
          at hudson.scm.SubversionSCM$1.invoke(SubversionSCM.java:278)
          at hudson.FilePath$FileCallableWrapper.call(FilePath.java:904)
          at hudson.remoting.UserRequest.perform(UserRequest.java:57)
          at hudson.remoting.UserRequest.perform(UserRequest.java:22)
          at hudson.remoting.Request$2.run(Request.java:178)
          at
          java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
          at
          java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
          at java.lang.Thread.run(Thread.java:595)
          finished: FAILURE

          Started 6 seconds ago
          Estimated remaining time: N/A

          System log:
          Apr 24, 2007 1:25:20 PM hudson.model.Run run
          INFO: debug-remote-svn-ssh #1 main build action completed: FAILURE

          Apr 24, 2007 1:25:20 PM hudson.model.Run setResult
          INFO: debug-remote-svn-ssh #1 : result is set to FAILURE by
          hudson.model.Run.run(Run.java:559)

          Apr 24, 2007 1:23:44 PM hudson.scm.SubversionSCM$DescriptorImpl$2 check
          INFO: Failed to access subversion repository svn+ssh://...
          org.tmatesoft.svn.core.SVNCancelException: svn: authentication cancelled
          at
          org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:30)
          at
          org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getNextAuthentication(DefaultSVNAuthenticationManager.java:181)
          at
          org.tmatesoft.svn.core.internal.io.svn.SVNGanymedConnector.open(SVNGanymedConnector.java:76)
          at
          org.tmatesoft.svn.core.internal.io.svn.SVNConnection.open(SVNConnection.java:59)
          at
          org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.openConnection(SVNRepositoryImpl.java:999)
          at
          org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.testConnection(SVNRepositoryImpl.java:68)
          at hudson.scm.SubversionSCM$DescriptorImpl$2.check(SubversionSCM.java:817)
          at hudson.util.FormFieldValidator.process(FormFieldValidator.java:40)
          at
          hudson.scm.SubversionSCM$DescriptorImpl.doSvnRemoteLocationCheck(SubversionSCM.java:791)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at
          sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
          at
          sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
          at java.lang.reflect.Method.invoke(Method.java:585)
          at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:95)
          at org.kohsuke.stapler.Function.bindAndinvoke(Function.java:51)
          at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:63)
          at
          org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:30)
          at org.kohsuke.stapler.Stapler.invoke(Stapler.java:270)
          at org.kohsuke.stapler.MetaClass$9.doDispatch(MetaClass.java:240)
          at
          org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:30)
          at org.kohsuke.stapler.Stapler.invoke(Stapler.java:270)
          at org.kohsuke.stapler.Stapler.invoke(Stapler.java:207)
          at org.kohsuke.stapler.Stapler.service(Stapler.java:72)
          at javax.servlet.http.HttpServlet.service(HttpServlet.java:45)
          at winstone.ServletConfiguration.execute(ServletConfiguration.java:249)
          at winstone.RequestDispatcher.forward(RequestDispatcher.java:334)
          at
          winstone.RequestHandlerThread.processRequest(RequestHandlerThread.java:244)
          at winstone.RequestHandlerThread.run(RequestHandlerThread.java:150)
          at java.lang.Thread.run(Thread.java:595)

          Apr 24, 2007 1:22:37 PM hudson.model.Slave$ComputerImpl$1 run
          INFO: slave agent launched for slave.hostname

          Apr 24, 2007 1:22:33 PM hudson.TcpSlaveAgentListener
          INFO: JNLP slave agent listener started on TCP port 42434

          Apr 24, 2007 1:22:33 PM hudson.PluginWrapper
          INFO: Loading plugin: /var/lib/hudson/data/plugins/xvnc.hpi

          Apr 24, 2007 1:22:33 PM hudson.PluginWrapper
          INFO: Loading plugin: /var/lib/hudson/data/plugins/trac.hpi

          Thread dump:
          I have saved a copy of it on my local machine, and can attach it if you think it
          would be helpful.

          • Kian Win

          kianwin added a comment - Updating the bug report on 1.104 Summary: The IOException no longer occurs, but the SVNCancelException still does. Console output: started Building remotely on slave.hostname Checking out a fresh workspace because Hudson failed to detect the current workspace \cygwin\home\hudson-slave\workspace\debug-remote-svn-ssh\. ERROR: svn: Path '\cygwin\home\hudson-slave\workspace\debug-remote-svn-ssh\.' ends in '.', which is unsupported for this operation org.tmatesoft.svn.core.SVNException: svn: Path '\cygwin\home\hudson-slave\workspace\debug-remote-svn-ssh\.' ends in '.', which is unsupported for this operation at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:49) at org.tmatesoft.svn.core.internal.wc.admin.SVNWCAccess.probe(SVNWCAccess.java:642) at org.tmatesoft.svn.core.internal.wc.admin.SVNWCAccess.probeOpen(SVNWCAccess.java:262) at org.tmatesoft.svn.core.wc.SVNWCClient.doInfo(SVNWCClient.java:1817) at org.tmatesoft.svn.core.wc.SVNWCClient.doInfo(SVNWCClient.java:1754) at org.tmatesoft.svn.core.wc.SVNWCClient.doInfo(SVNWCClient.java:2108) at hudson.scm.SubversionSCM.parseSvnInfo(SubversionSCM.java:366) at hudson.scm.SubversionSCM.access$000(SubversionSCM.java:74) at hudson.scm.SubversionSCM$3.invoke(SubversionSCM.java:451) at hudson.scm.SubversionSCM$3.invoke(SubversionSCM.java:438) at hudson.FilePath$FileCallableWrapper.call(FilePath.java:904) at hudson.remoting.UserRequest.perform(UserRequest.java:57) at hudson.remoting.UserRequest.perform(UserRequest.java:22) at hudson.remoting.Request$2.run(Request.java:178) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) at java.lang.Thread.run(Thread.java:595) Checking out svn+ssh://... ERROR: Failed to check out svn+ssh://... org.tmatesoft.svn.core.SVNCancelException: svn: authentication cancelled at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:30) at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:155) at org.tmatesoft.svn.core.internal.io.svn.SVNGanymedConnector.open(SVNGanymedConnector.java:89) at org.tmatesoft.svn.core.internal.io.svn.SVNConnection.open(SVNConnection.java:59) at org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.openConnection(SVNRepositoryImpl.java:999) at org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.getLatestRevision(SVNRepositoryImpl.java:136) at org.tmatesoft.svn.core.wc.SVNBasicClient.getRevisionNumber(SVNBasicClient.java:344) at org.tmatesoft.svn.core.wc.SVNBasicClient.getLocations(SVNBasicClient.java:458) at org.tmatesoft.svn.core.wc.SVNBasicClient.createRepository(SVNBasicClient.java:414) at org.tmatesoft.svn.core.wc.SVNBasicClient.createRepository(SVNBasicClient.java:378) at org.tmatesoft.svn.core.wc.SVNUpdateClient.doCheckout(SVNUpdateClient.java:305) at hudson.scm.SubversionSCM$1.invoke(SubversionSCM.java:305) at hudson.scm.SubversionSCM$1.invoke(SubversionSCM.java:278) at hudson.FilePath$FileCallableWrapper.call(FilePath.java:904) at hudson.remoting.UserRequest.perform(UserRequest.java:57) at hudson.remoting.UserRequest.perform(UserRequest.java:22) at hudson.remoting.Request$2.run(Request.java:178) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) at java.lang.Thread.run(Thread.java:595) finished: FAILURE Started 6 seconds ago Estimated remaining time: N/A System log: Apr 24, 2007 1:25:20 PM hudson.model.Run run INFO: debug-remote-svn-ssh #1 main build action completed: FAILURE Apr 24, 2007 1:25:20 PM hudson.model.Run setResult INFO: debug-remote-svn-ssh #1 : result is set to FAILURE by hudson.model.Run.run(Run.java:559) Apr 24, 2007 1:23:44 PM hudson.scm.SubversionSCM$DescriptorImpl$2 check INFO: Failed to access subversion repository svn+ssh://... org.tmatesoft.svn.core.SVNCancelException: svn: authentication cancelled at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:30) at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getNextAuthentication(DefaultSVNAuthenticationManager.java:181) at org.tmatesoft.svn.core.internal.io.svn.SVNGanymedConnector.open(SVNGanymedConnector.java:76) at org.tmatesoft.svn.core.internal.io.svn.SVNConnection.open(SVNConnection.java:59) at org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.openConnection(SVNRepositoryImpl.java:999) at org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.testConnection(SVNRepositoryImpl.java:68) at hudson.scm.SubversionSCM$DescriptorImpl$2.check(SubversionSCM.java:817) at hudson.util.FormFieldValidator.process(FormFieldValidator.java:40) at hudson.scm.SubversionSCM$DescriptorImpl.doSvnRemoteLocationCheck(SubversionSCM.java:791) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:95) at org.kohsuke.stapler.Function.bindAndinvoke(Function.java:51) at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:63) at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:30) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:270) at org.kohsuke.stapler.MetaClass$9.doDispatch(MetaClass.java:240) at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:30) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:270) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:207) at org.kohsuke.stapler.Stapler.service(Stapler.java:72) at javax.servlet.http.HttpServlet.service(HttpServlet.java:45) at winstone.ServletConfiguration.execute(ServletConfiguration.java:249) at winstone.RequestDispatcher.forward(RequestDispatcher.java:334) at winstone.RequestHandlerThread.processRequest(RequestHandlerThread.java:244) at winstone.RequestHandlerThread.run(RequestHandlerThread.java:150) at java.lang.Thread.run(Thread.java:595) Apr 24, 2007 1:22:37 PM hudson.model.Slave$ComputerImpl$1 run INFO: slave agent launched for slave.hostname Apr 24, 2007 1:22:33 PM hudson.TcpSlaveAgentListener INFO: JNLP slave agent listener started on TCP port 42434 Apr 24, 2007 1:22:33 PM hudson.PluginWrapper INFO: Loading plugin: /var/lib/hudson/data/plugins/xvnc.hpi Apr 24, 2007 1:22:33 PM hudson.PluginWrapper INFO: Loading plugin: /var/lib/hudson/data/plugins/trac.hpi Thread dump: I have saved a copy of it on my local machine, and can attach it if you think it would be helpful. Kian Win

          This report now contains two issues.

          The first is that '.' in the path confuses SVNKit to abort svn info, and I put
          the fix for that in 1.105.

          The second issue is that "authentication cancelled" is reported without much
          information. I added debug logging for this in 1.105. To enable this, run the
          following program from the scripting console,

          java.util.Logger.getLogger("hudson.scm.SubversionSCM").setLevel(java.util.logging.Level.ALL);

          then perform a build to reproduce a problem. Then you should see more
          information in the system log screen in the Hudson webui.

          I need to implement #517 to further improve the trouble-shooting capability in
          Hudson

          Kohsuke Kawaguchi added a comment - This report now contains two issues. The first is that '.' in the path confuses SVNKit to abort svn info, and I put the fix for that in 1.105. The second issue is that "authentication cancelled" is reported without much information. I added debug logging for this in 1.105. To enable this, run the following program from the scripting console, java.util.Logger.getLogger("hudson.scm.SubversionSCM").setLevel(java.util.logging.Level.ALL); then perform a build to reproduce a problem. Then you should see more information in the system log screen in the Hudson webui. I need to implement #517 to further improve the trouble-shooting capability in Hudson

          kianwin added a comment -

          The first issue is fixed.

          For the second issue, I ran:
          java.util.logging.Logger.getLogger("hudson.scm.SubversionSCM").setLevel(java.util.logging.Level.ALL)

          and obtained on the system log:
          Apr 27, 2007 1:25:03 AM hudson.model.Run run
          INFO: debug-remote-svn-ssh #2 main build action completed: FAILURE

          Apr 27, 2007 1:25:03 AM hudson.scm.SubversionSCM
          FINE:
          getCredential(svn+ssh://...)=>hudson.scm.SubversionSCM$DescriptorImpl$SshPublicKeyCredential@d50eb9

          Apr 27, 2007 1:25:03 AM hudson.scm.SubversionSCM
          FINE:
          getCredential(svn+ssh://...)=>hudson.scm.SubversionSCM$DescriptorImpl$SshPublicKeyCredential@d50eb9

          The console output remains:
          ...
          org.tmatesoft.svn.core.SVNCancelException: svn: authentication cancelled
          ...

          kianwin added a comment - The first issue is fixed. For the second issue, I ran: java.util.logging.Logger.getLogger("hudson.scm.SubversionSCM").setLevel(java.util.logging.Level.ALL) and obtained on the system log: Apr 27, 2007 1:25:03 AM hudson.model.Run run INFO: debug-remote-svn-ssh #2 main build action completed: FAILURE Apr 27, 2007 1:25:03 AM hudson.scm.SubversionSCM FINE: getCredential(svn+ssh://...)=>hudson.scm.SubversionSCM$DescriptorImpl$SshPublicKeyCredential@d50eb9 Apr 27, 2007 1:25:03 AM hudson.scm.SubversionSCM FINE: getCredential(svn+ssh://...)=>hudson.scm.SubversionSCM$DescriptorImpl$SshPublicKeyCredential@d50eb9 The console output remains: ... org.tmatesoft.svn.core.SVNCancelException: svn: authentication cancelled ...

          I added one more probe message in 1.107 SNAPSHOT. Would it be possible to try
          the latest snapshot with the same debug probe?

          I wonder if it's at all possible for you to run Hudson under the debugger to see
          what's going on.

          Kohsuke Kawaguchi added a comment - I added one more probe message in 1.107 SNAPSHOT. Would it be possible to try the latest snapshot with the same debug probe? I wonder if it's at all possible for you to run Hudson under the debugger to see what's going on.

          kianwin added a comment -

          Sorry for being away for awhile.

          On 1.107-SNAPSHOT, the system log produces:

          May 23, 2007 9:32:13 PM hudson.model.Run run
          INFO: debug-remote-svn-ssh #1 main build action completed: FAILURE

          May 23, 2007 9:32:13 PM hudson.scm.SubversionSCM
          FINE:
          getCredential(svn+ssh://server.com)=>hudson.scm.SubversionSCM$DescriptorImpl$SshPublicKeyCredential@74cb02

          May 23, 2007 9:32:08 PM hudson.scm.SubversionSCM
          FINE:
          getCredential(svn+ssh://server.com)=>hudson.scm.SubversionSCM$DescriptorImpl$SshPublicKeyCredential@74cb02

          May 23, 2007 9:31:59 PM hudson.triggers.SCMTrigger$Runner runPolling
          INFO: Polling SCM changes of hudson-job

          May 23, 2007 9:31:56 PM hudson.scm.SubversionSCM
          FINE:
          requestClientAuthentication(svn.ssh,svn+ssh://server.com/home/hudson-slave/svn/project/trunk/src,svn+ssh://server.com)

          =>hudson.scm.SubversionSCM$DescriptorImpl$SshPublicKeyCredential@74cb02

          May 23, 2007 9:31:56 PM hudson.scm.SubversionSCM
          FINE:
          getCredential(svn+ssh://server.com)=>hudson.scm.SubversionSCM$DescriptorImpl$SshPublicKeyCredential@74cb02


          Nothing much there, huh. =/

          I could try to attach a debugger to Hudson, if I could figure out how to make it
          work. Actually, I did attempt to establish a remote debugging session through
          Eclipse, but I did not succeed in placing a breakpoint. Any mini-guides that you
          know off the top of your head?

          Also, I'm guessing it will be more interesting to look at the
          org.tmatesoft.svn.core package? The code in SubversionSCM.java appears to be
          fairly straight-forward...

          kianwin added a comment - Sorry for being away for awhile. On 1.107-SNAPSHOT, the system log produces: May 23, 2007 9:32:13 PM hudson.model.Run run INFO: debug-remote-svn-ssh #1 main build action completed: FAILURE May 23, 2007 9:32:13 PM hudson.scm.SubversionSCM FINE: getCredential(svn+ssh://server.com)=>hudson.scm.SubversionSCM$DescriptorImpl$SshPublicKeyCredential@74cb02 May 23, 2007 9:32:08 PM hudson.scm.SubversionSCM FINE: getCredential(svn+ssh://server.com)=>hudson.scm.SubversionSCM$DescriptorImpl$SshPublicKeyCredential@74cb02 May 23, 2007 9:31:59 PM hudson.triggers.SCMTrigger$Runner runPolling INFO: Polling SCM changes of hudson-job May 23, 2007 9:31:56 PM hudson.scm.SubversionSCM FINE: requestClientAuthentication(svn.ssh,svn+ssh://server.com/home/hudson-slave/svn/project/trunk/src,svn+ssh://server.com) =>hudson.scm.SubversionSCM$DescriptorImpl$SshPublicKeyCredential@74cb02 May 23, 2007 9:31:56 PM hudson.scm.SubversionSCM FINE: getCredential(svn+ssh://server.com)=>hudson.scm.SubversionSCM$DescriptorImpl$SshPublicKeyCredential@74cb02 Nothing much there, huh. =/ I could try to attach a debugger to Hudson, if I could figure out how to make it work. Actually, I did attempt to establish a remote debugging session through Eclipse, but I did not succeed in placing a breakpoint. Any mini-guides that you know off the top of your head? Also, I'm guessing it will be more interesting to look at the org.tmatesoft.svn.core package? The code in SubversionSCM.java appears to be fairly straight-forward...

          Hmm. All the log messages appear to be as expected. Hudson is returning a
          credential that the SVNKit is supposed to use.

          It would be really great if you can try a debugger. Normally, when a break point
          fails to attach like you describe, the cause is that your source files aren't
          matching the binary. You can verify this hypothesis by placing breakpoints to a
          lot of places (and hope one of them hits, and from there you can look at local
          variables and so on to see if the line numbers are matching), place break points
          on exceptions (that hits when exceptions are thrown), or place breakpoints to
          somewhere very stable.

          Kohsuke Kawaguchi added a comment - Hmm. All the log messages appear to be as expected. Hudson is returning a credential that the SVNKit is supposed to use. It would be really great if you can try a debugger. Normally, when a break point fails to attach like you describe, the cause is that your source files aren't matching the binary. You can verify this hypothesis by placing breakpoints to a lot of places (and hope one of them hits, and from there you can look at local variables and so on to see if the line numbers are matching), place break points on exceptions (that hits when exceptions are thrown), or place breakpoints to somewhere very stable.

          dbertrand added a comment -

          Created an attachment (id=64)
          Patch for "Authentication cancelled" SVNSSHAuthentication bug.

          dbertrand added a comment - Created an attachment (id=64) Patch for "Authentication cancelled" SVNSSHAuthentication bug.

          I believe I fixed this bug in 1.113, but I'm not sure. Verification appreciated.

          dbertrand, thank you for the patch, but you attached the whole source file, not
          the diff. Since I can't figure out which version of the file you based your
          change, I can't be sure what changes you made.

          I compared it against the trunk, but I didn't find obvious changes. Perhaps the
          Hudson code since evolved to contain the same fix?

          Kohsuke Kawaguchi added a comment - I believe I fixed this bug in 1.113, but I'm not sure. Verification appreciated. dbertrand, thank you for the patch, but you attached the whole source file, not the diff. Since I can't figure out which version of the file you based your change, I can't be sure what changes you made. I compared it against the trunk, but I didn't find obvious changes. Perhaps the Hudson code since evolved to contain the same fix?

          kianwin added a comment -

          The issue remains in Hudson 1.114. The same exception occurs:

          org.tmatesoft.svn.core.SVNCancelException: svn: authentication cancelled
          at
          org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:30)
          at
          org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:155)
          at
          org.tmatesoft.svn.core.internal.io.svn.SVNGanymedConnector.open(SVNGanymedConnector.java:89)
          at org.tmatesoft.svn.core.internal.io.svn.SVNConnection.open(SVNConnection.java:60)
          at
          org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.openConnection(SVNRepositoryImpl.java:998)
          at
          org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.getLatestRevision(SVNRepositoryImpl.java:136)
          at
          org.tmatesoft.svn.core.wc.SVNBasicClient.getRevisionNumber(SVNBasicClient.java:344)
          at org.tmatesoft.svn.core.wc.SVNBasicClient.getLocations(SVNBasicClient.java:458)
          at
          org.tmatesoft.svn.core.wc.SVNBasicClient.createRepository(SVNBasicClient.java:414)
          at
          org.tmatesoft.svn.core.wc.SVNBasicClient.createRepository(SVNBasicClient.java:378)
          at org.tmatesoft.svn.core.wc.SVNUpdateClient.doCheckout(SVNUpdateClient.java:305)
          at hudson.scm.SubversionSCM$1.invoke(SubversionSCM.java:305)
          at hudson.scm.SubversionSCM$1.invoke(SubversionSCM.java:278)
          at hudson.FilePath$FileCallableWrapper.call(FilePath.java:933)
          at hudson.remoting.UserRequest.perform(UserRequest.java:57)
          at hudson.remoting.UserRequest.perform(UserRequest.java:22)
          at hudson.remoting.Request$2.run(Request.java:178)
          at
          java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
          at java.lang.Thread.run(Thread.java:595)

          kianwin added a comment - The issue remains in Hudson 1.114. The same exception occurs: org.tmatesoft.svn.core.SVNCancelException: svn: authentication cancelled at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:30) at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getFirstAuthentication(DefaultSVNAuthenticationManager.java:155) at org.tmatesoft.svn.core.internal.io.svn.SVNGanymedConnector.open(SVNGanymedConnector.java:89) at org.tmatesoft.svn.core.internal.io.svn.SVNConnection.open(SVNConnection.java:60) at org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.openConnection(SVNRepositoryImpl.java:998) at org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryImpl.getLatestRevision(SVNRepositoryImpl.java:136) at org.tmatesoft.svn.core.wc.SVNBasicClient.getRevisionNumber(SVNBasicClient.java:344) at org.tmatesoft.svn.core.wc.SVNBasicClient.getLocations(SVNBasicClient.java:458) at org.tmatesoft.svn.core.wc.SVNBasicClient.createRepository(SVNBasicClient.java:414) at org.tmatesoft.svn.core.wc.SVNBasicClient.createRepository(SVNBasicClient.java:378) at org.tmatesoft.svn.core.wc.SVNUpdateClient.doCheckout(SVNUpdateClient.java:305) at hudson.scm.SubversionSCM$1.invoke(SubversionSCM.java:305) at hudson.scm.SubversionSCM$1.invoke(SubversionSCM.java:278) at hudson.FilePath$FileCallableWrapper.call(FilePath.java:933) at hudson.remoting.UserRequest.perform(UserRequest.java:57) at hudson.remoting.UserRequest.perform(UserRequest.java:22) at hudson.remoting.Request$2.run(Request.java:178) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) at java.lang.Thread.run(Thread.java:595)

          kianwin added a comment -

          I am migrating the Hudson slave from Cygwin to Linux in the next few days, so I
          will be able to check if this bug is platform-specific in any way.

          kianwin added a comment - I am migrating the Hudson slave from Cygwin to Linux in the next few days, so I will be able to check if this bug is platform-specific in any way.

          1.151 contains some fixes to svn+ssh handling.

          Kohsuke Kawaguchi added a comment - 1.151 contains some fixes to svn+ssh handling.

          kianwin added a comment -

          Sorry for taking awhile to verify this.

          Everything works great on 1.166. Thanks!

          kianwin added a comment - Sorry for taking awhile to verify this. Everything works great on 1.166. Thanks!

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

              Created:
              Updated:
              Resolved: