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)

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Critical
    • Resolution: Fixed
    • Component/s: core
    • Labels:
      None

      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).

        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: