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

FilePath.installIfNecessaryFrom can fail due to server error even when unpacked dir already exists

    XMLWordPrintable

    Details

    • Similar Issues:

      Description

      FilePath.installIfNecessaryFrom, used from ZipExtractionInstaller, is designed to log a warning but continue in case the tool is already unpacked and the server returns an error while it is checking for a newer archive. Yet this stack trace suggests that this logic is not working, because the IOException comes after connect in getInputStream:

      Unpacking <URL> to <TOOLPATH> on <SLAVE>
      ERROR: Failed to download <URL> from slave; will retry from master
      java.io.IOException: remote file operation failed: <TOOLPATH> at hudson.remoting.Channel@...:<SLAVE>: java.net.ConnectException: Connection timed out
      	at hudson.FilePath.act(FilePath.java:976)
      	at hudson.FilePath.act(FilePath.java:958)
      	at hudson.FilePath.installIfNecessaryFrom(FilePath.java:797)
      	at hudson.tools.ZipExtractionInstaller.performInstallation(ZipExtractionInstaller.java:79)
      	at hudson.tools.InstallerTranslator.getToolHome(InstallerTranslator.java:68)
      	at hudson.tools.ToolLocationNodeProperty.getToolHome(ToolLocationNodeProperty.java:107)
      	at hudson.tools.ToolInstallation.translateFor(ToolInstallation.java:205)
      	at hudson.model.JDK.forNode(JDK.java:130)
      	at hudson.model.AbstractProject.getEnvironment(AbstractProject.java:350)
      	at hudson.model.AbstractProject.pollWithWorkspace(AbstractProject.java:1444)
      	at hudson.model.AbstractProject._poll(AbstractProject.java:1421)
      	at hudson.model.AbstractProject.poll(AbstractProject.java:1332)
      	at jenkins.triggers.SCMTriggerItem$SCMTriggerItems$Bridge.poll(SCMTriggerItem.java:119)
      	at hudson.triggers.SCMTrigger$Runner.runPolling(SCMTrigger.java:515)
      	at hudson.triggers.SCMTrigger$Runner.run(SCMTrigger.java:544)
      	at hudson.util.SequentialExecutionQueue$QueueEntry.run(SequentialExecutionQueue.java:118)
      	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:262)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      	at java.lang.Thread.run(Thread.java:745)
      Caused by: java.net.ConnectException: Connection timed out
      	at java.net.PlainSocketImpl.socketConnect(Native Method)
      	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
      	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
      	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
      	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
      	at java.net.Socket.connect(Socket.java:579)
      	at java.net.Socket.connect(Socket.java:528)
      	at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
      	at sun.net.www.http.HttpClient.openServer(HttpClient.java:432)
      	at sun.net.www.http.HttpClient.openServer(HttpClient.java:527)
      	at sun.net.www.http.HttpClient.<init>(HttpClient.java:211)
      	at sun.net.www.http.HttpClient.New(HttpClient.java:308)
      	at sun.net.www.http.HttpClient.New(HttpClient.java:326)
      	at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:996)
      	at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:932)
      	at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:850)
      	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1300)
      	at java.net.URL.openStream(URL.java:1037)
      	at hudson.FilePath$Unpack.invoke(FilePath.java:833)
      	at hudson.FilePath$Unpack.invoke(FilePath.java:827)
      	at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2577)
      	at hudson.remoting.UserRequest.perform(UserRequest.java:121)
      	at hudson.remoting.UserRequest.perform(UserRequest.java:49)
      	at hudson.remoting.Request$2.run(Request.java:324)
      	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:262)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      	at java.lang.Thread.run(Thread.java:745)
      	at ......remote call to <SLAVE>(Native Method)
      	at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1356)
      	at hudson.remoting.UserResponse.retrieve(UserRequest.java:221)
      	at hudson.remoting.Channel.call(Channel.java:752)
      	at hudson.FilePath.act(FilePath.java:969)
      	... 20 more
      FATAL: Failed to install <URL> to <TOOLPATH>
      java.io.IOException: Failed to install <URL> to <TOOLPATH>
      	at hudson.FilePath.installIfNecessaryFrom(FilePath.java:822)
      	at hudson.tools.ZipExtractionInstaller.performInstallation(ZipExtractionInstaller.java:79)
      	at hudson.tools.InstallerTranslator.getToolHome(InstallerTranslator.java:68)
      	at hudson.tools.ToolLocationNodeProperty.getToolHome(ToolLocationNodeProperty.java:107)
      	at hudson.tools.ToolInstallation.translateFor(ToolInstallation.java:205)
      	at hudson.model.JDK.forNode(JDK.java:130)
      	at hudson.model.AbstractProject.getEnvironment(AbstractProject.java:350)
      	at hudson.model.AbstractProject.pollWithWorkspace(AbstractProject.java:1444)
      	at hudson.model.AbstractProject._poll(AbstractProject.java:1421)
      	at hudson.model.AbstractProject.poll(AbstractProject.java:1332)
      	at jenkins.triggers.SCMTriggerItem$SCMTriggerItems$Bridge.poll(SCMTriggerItem.java:119)
      	at hudson.triggers.SCMTrigger$Runner.runPolling(SCMTrigger.java:515)
      	at hudson.triggers.SCMTrigger$Runner.run(SCMTrigger.java:544)
      	at hudson.util.SequentialExecutionQueue$QueueEntry.run(SequentialExecutionQueue.java:118)
      	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:262)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      	at java.lang.Thread.run(Thread.java:745)
      Caused by: java.io.IOException: Server returned HTTP response code: 504 for URL: <URL>
      	at sun.reflect.GeneratedConstructorAccessor691.newInstance(Unknown Source)
      	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
      	at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
      	at sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:1675)
      	at sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:1673)
      	at java.security.AccessController.doPrivileged(Native Method)
      	at sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:1671)
      	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1244)
      	at org.jvnet.robust_http_client.RetryableHttpStream.getStream(RetryableHttpStream.java:98)
      	at org.jvnet.robust_http_client.RetryableHttpStream.<init>(RetryableHttpStream.java:91)
      	at hudson.ProxyConfiguration.getInputStream(ProxyConfiguration.java:248)
      	at hudson.FilePath.installIfNecessaryFrom(FilePath.java:808)
      	... 18 more
      Caused by: java.io.IOException: Server returned HTTP response code: 504 for URL: <URL>
      	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1626)
      	at sun.net.www.protocol.http.HttpURLConnection.getHeaderField(HttpURLConnection.java:2678)
      	at java.net.URLConnection.getHeaderFieldLong(URLConnection.java:639)
      	at java.net.URLConnection.getContentLengthLong(URLConnection.java:511)
      	at java.net.URLConnection.getContentLength(URLConnection.java:495)
      	at org.jvnet.robust_http_client.RetryableHttpStream.<init>(RetryableHttpStream.java:90)
      	... 20 more
      

        Attachments

          Activity

          Hide
          jglick Jesse Glick added a comment -

          The problem is rather that the initial connection succeeded but returned an error code other than 200 or 304, which ought to produce a warning but continue.

          Show
          jglick Jesse Glick added a comment - The problem is rather that the initial connection succeeded but returned an error code other than 200 or 304, which ought to produce a warning but continue.
          Hide
          scm_issue_link SCM/JIRA link daemon added a comment -

          Code changed in jenkins
          User: Jesse Glick
          Path:
          changelog.html
          core/src/main/java/hudson/FilePath.java
          core/src/test/java/hudson/FilePathTest.java
          http://jenkins-ci.org/commit/jenkins/1fcee97d2fdda236fea149f671d9c8a95cdb8528
          Log:
          [FIXED JENKINS-26196] More robust handling of server errors in FilePath.installIfNecessaryFrom.

          Show
          scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: changelog.html core/src/main/java/hudson/FilePath.java core/src/test/java/hudson/FilePathTest.java http://jenkins-ci.org/commit/jenkins/1fcee97d2fdda236fea149f671d9c8a95cdb8528 Log: [FIXED JENKINS-26196] More robust handling of server errors in FilePath.installIfNecessaryFrom.
          Hide
          dogfood dogfood added a comment -

          Integrated in jenkins_main_trunk #3901
          [FIXED JENKINS-26196] More robust handling of server errors in FilePath.installIfNecessaryFrom. (Revision 1fcee97d2fdda236fea149f671d9c8a95cdb8528)

          Result = UNSTABLE
          jesse glick : 1fcee97d2fdda236fea149f671d9c8a95cdb8528
          Files :

          • changelog.html
          • core/src/main/java/hudson/FilePath.java
          • core/src/test/java/hudson/FilePathTest.java
          Show
          dogfood dogfood added a comment - Integrated in jenkins_main_trunk #3901 [FIXED JENKINS-26196] More robust handling of server errors in FilePath.installIfNecessaryFrom. (Revision 1fcee97d2fdda236fea149f671d9c8a95cdb8528) Result = UNSTABLE jesse glick : 1fcee97d2fdda236fea149f671d9c8a95cdb8528 Files : changelog.html core/src/main/java/hudson/FilePath.java core/src/test/java/hudson/FilePathTest.java

            People

            • Assignee:
              jglick Jesse Glick
              Reporter:
              jglick Jesse Glick
            • Votes:
              1 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: