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

FilePath.read() triggers remote issues if the file is not read until EOF (Pipe is already closed)

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Resolved (View Workflow)
    • Priority: Critical
    • Resolution: Fixed
    • Component/s: core
    • Labels:
      None
    • Similar Issues:

      Description

      If a stream is open remotely using FilePath.read() and the file is not read to the very end, the log will be spammed with exceptions like:

      Jan 10, 2011 1:36:51 PM hudson.remoting.ProxyOutputStream$Chunk$1 run
        WARNING: Failed to write to stream
         java.io.IOException: Pipe is already closed
         at hudson.remoting.FastPipedOutputStream.write(FastPipedOutputStream.java:147)
         at hudson.remoting.FastPipedOutputStream.write(FastPipedOutputStream.java:131)
         at hudson.remoting.ProxyOutputStream$Chunk$1.run(ProxyOutputStream.java:185) 
      

      ...and finally disconnect the slave. Several plug-ins are affected by this bug, for instance the Emma-plug-in. Marked as critical since it yet another remote issue and keeps us from upgrade. It is also easy to reproduce.

      To reproduce, just create a publisher plug-in with a perform() that looks like this:

        @Override
        public boolean perform(AbstractBuild build, Launcher launcher, BuildListener listener) throws IOException {
            InputStream in = build.getWorkspace().child("large_file_in_workspace").read();
            // Just read one byte
            System.out.println(in.read());
            // Close it and watch the hudson log grow and slave (most often) disconnect.
            in.close();
            return true;
        } 
      

      Test the plug-in with Hudson 1.390+. Make sure the new publisher plug-in is used in a project running on a slave (and also make sure that the "large_file_in_workspace"-file exists in the remote workspace).

        Attachments

          Activity

          Hide
          scm_issue_link SCM/JIRA link daemon added a comment -

          Code changed in jenkins
          User: Brian Atkinson
          Path:
          remoting/src/main/java/hudson/remoting/Channel.java
          remoting/src/main/java/hudson/remoting/Command.java
          remoting/src/main/java/hudson/remoting/Pipe.java
          remoting/src/main/java/hudson/remoting/PipeWindow.java
          remoting/src/main/java/hudson/remoting/ProxyOutputStream.java
          remoting/src/test/java/hudson/remoting/PipeTest.java
          http://jenkins-ci.org/commit/core/4c10efe1a9285bcc6eed193ede82c0bdd39d658a
          Log:
          Merge branch 'JENKINS-8592'

          Show
          scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Brian Atkinson Path: remoting/src/main/java/hudson/remoting/Channel.java remoting/src/main/java/hudson/remoting/Command.java remoting/src/main/java/hudson/remoting/Pipe.java remoting/src/main/java/hudson/remoting/PipeWindow.java remoting/src/main/java/hudson/remoting/ProxyOutputStream.java remoting/src/test/java/hudson/remoting/PipeTest.java http://jenkins-ci.org/commit/core/4c10efe1a9285bcc6eed193ede82c0bdd39d658a Log: Merge branch ' JENKINS-8592 '
          Hide
          dogfood dogfood added a comment -

          Integrated in jenkins_main_trunk #519
          JENKINS-8592 let the writer end know if the reader end of the pipe

          Kohsuke Kawaguchi :
          Files :

          • remoting/src/main/java/hudson/remoting/Pipe.java
          • remoting/src/main/java/hudson/remoting/ProxyOutputStream.java
          • remoting/src/test/java/hudson/remoting/PipeTest.java
          • remoting/src/main/java/hudson/remoting/PipeWindow.java
          • remoting/src/main/java/hudson/remoting/Channel.java
          • remoting/src/main/java/hudson/remoting/Command.java
          Show
          dogfood dogfood added a comment - Integrated in jenkins_main_trunk #519 JENKINS-8592 let the writer end know if the reader end of the pipe Kohsuke Kawaguchi : Files : remoting/src/main/java/hudson/remoting/Pipe.java remoting/src/main/java/hudson/remoting/ProxyOutputStream.java remoting/src/test/java/hudson/remoting/PipeTest.java remoting/src/main/java/hudson/remoting/PipeWindow.java remoting/src/main/java/hudson/remoting/Channel.java remoting/src/main/java/hudson/remoting/Command.java
          Hide
          gjeudy gjeudy added a comment -

          I was told in a comment that this issue might fix JENKINS-6355 indirectly. I can confirm it has not fixed JENKINS-6355.

          I'm using 1.400 and emma plugin 1.21 and issue still occurs intermittently.

          Show
          gjeudy gjeudy added a comment - I was told in a comment that this issue might fix JENKINS-6355 indirectly. I can confirm it has not fixed JENKINS-6355 . I'm using 1.400 and emma plugin 1.21 and issue still occurs intermittently.
          Hide
          gjeudy gjeudy added a comment -

          sorry the JIRA in the previous comment should be: JENKINS-7586

          Show
          gjeudy gjeudy added a comment - sorry the JIRA in the previous comment should be: JENKINS-7586
          Hide
          kutzi kutzi added a comment -

          Since there were several changes committed for this, I assume it's fixed.
          Please reopen, if not.

          Show
          kutzi kutzi added a comment - Since there were several changes committed for this, I assume it's fixed. Please reopen, if not.

            People

            Assignee:
            nairb774 nairb774
            Reporter:
            GLundh GLundh
            Votes:
            2 Vote for this issue
            Watchers:
            4 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved: