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

SVN checkouts fail for slaves behind proxy

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Not A Defect
    • Icon: Critical Critical
    • subversion-plugin
    • None
    • Jenkins 1.429 (and at least back through 1.378), Subversion-Plugin 1.31, slaves running on both *NIX and Windows

      We are having problems getting Jenkins working with Subversion repositories hosted outside our firewall (i.e., available via HTTP proxy). Here is the situation:

      • Jenkins 1.429, Subversion-Plugin 1.31
      • 2 machines, a Master and a Slave, both inside the firewall
      • 2 repositories (projects):
        • "A": hosted by us, and available directly (i.e. inside the firewall);
        • "B": hosted externally (i.e., must go through the firewall);
        • the project A has a link (via svn:externals property) to the project B.
        • both repositories accessed via "https://" protocol
      • a job that checks out "A" using the Subversion-Plugin

      If we run the job (and checkout A) on the Master, everything works.

      However, if the job runs on the slave, the checkout appears to "work" (in that Jenkins does not detect an error), but the external is completely missing from the workspace. Further, if I reconfigure the job to explicitly checkout the B (external) project as a separate target, the checkout fails on the Slave with "java.net.SocketTimeoutException: connect timed out":

      Checking out https://<<path-to-repository>>
      ERROR: Failed to check out https://<<path-to-repository>> 
      org.tmatesoft.svn.core.SVNException: svn: PROPFIND /svnroot/<<path-to-leading-directory>> failed
      	at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:64)
      	at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:51)
      	at org.tmatesoft.svn.core.internal.io.dav.DAVUtil.findStartingProperties(DAVUtil.java:136)
      	at org.tmatesoft.svn.core.internal.io.dav.DAVUtil.getBaselineProperties(DAVUtil.java:226)
      	at org.tmatesoft.svn.core.internal.io.dav.DAVUtil.getBaselineInfo(DAVUtil.java:184)
      	at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getLatestRevision(DAVRepository.java:182)
      	at org.tmatesoft.svn.core.wc.SVNBasicClient.getRevisionNumber(SVNBasicClient.java:482)
      	at org.tmatesoft.svn.core.wc.SVNBasicClient.getLocations(SVNBasicClient.java:873)
      	at org.tmatesoft.svn.core.wc.SVNBasicClient.createRepository(SVNBasicClient.java:534)
      	at org.tmatesoft.svn.core.wc.SVNUpdateClient.doCheckout(SVNUpdateClient.java:901)
      	at hudson.scm.subversion.CheckoutUpdater$1.perform(CheckoutUpdater.java:90)
      	at hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:136)
      	at hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:144)
      	at hudson.scm.subversion.UpdateUpdater$TaskImpl.perform(UpdateUpdater.java:121)
      	at hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:136)
      	at hudson.scm.SubversionSCM$CheckOutTask.perform(SubversionSCM.java:773)
      	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:754)
      	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:738)
      	at hudson.FilePath$FileCallableWrapper.call(FilePath.java:1995)
      	at hudson.remoting.UserRequest.perform(UserRequest.java:118)
      	at hudson.remoting.UserRequest.perform(UserRequest.java:48)
      	at hudson.remoting.Request$2.run(Request.java:287)
      	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:60)
      	at java.lang.Thread.run(Unknown Source)
      Caused by: org.tmatesoft.svn.core.SVNErrorMessage: svn: PROPFIND /svnroot/epanet/MSX/trunk failed
      	at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:200)
      	at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:146)
      	at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:89)
      	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:291)
      	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:276)
      	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:264)
      	at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.doPropfind(DAVConnection.java:126)
      	at org.tmatesoft.svn.core.internal.io.dav.DAVUtil.getProperties(DAVUtil.java:73)
      	at org.tmatesoft.svn.core.internal.io.dav.DAVUtil.getResourceProperties(DAVUtil.java:79)
      	at org.tmatesoft.svn.core.internal.io.dav.DAVUtil.getStartingProperties(DAVUtil.java:103)
      	at org.tmatesoft.svn.core.internal.io.dav.DAVUtil.findStartingProperties(DAVUtil.java:125)
      	... 26 more
      Caused by: org.tmatesoft.svn.core.SVNException: svn: PROPFIND request failed on '/svnroot/epanet/MSX/trunk'
      svn: connection refused by the server
      	at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:64)
      	at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:51)
      	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:644)
      	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:285)
      	... 33 more
      Caused by: org.tmatesoft.svn.core.SVNErrorMessage: svn: PROPFIND request failed on '/svnroot/epanet/MSX/trunk'
      	at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:200)
      	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:642)
      	... 34 more
      Caused by: org.tmatesoft.svn.core.SVNErrorMessage: svn: connection refused by the server
      	at org.tmatesoft.svn.core.SVNErrorMessage.create(SVNErrorMessage.java:200)
      	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection._request(HTTPConnection.java:400)
      	... 34 more
      Caused by: java.net.ConnectException: Connection timed out: connect
      	at java.net.PlainSocketImpl.socketConnect(Native Method)
      	at java.net.PlainSocketImpl.doConnect(Unknown Source)
      	at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
      	at java.net.PlainSocketImpl.connect(Unknown Source)
      	at java.net.SocksSocketImpl.connect(Unknown Source)
      	at java.net.Socket.connect(Unknown Source)
      	at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(Unknown Source)
      	at org.tmatesoft.svn.core.internal.util.SVNSocketConnection.run(SVNSocketConnection.java:57)
      	... 1 more
      

      Both Master and Slave machines have (identical) correctly-configured ~/.subversion/servers files, and a checkout of A (and hence, B) using the command line as the Jenkins user works on both machines.

      This sounds like the Subversion-Plugin is not correctly picking up a proxy configuration when it runs on a slave.

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

              Created:
              Updated:
              Resolved: