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

This issue is archived. You can view it, but you can't modify it. Learn more

XMLWordPrintable

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

            Assignee:
            nairb774
            Reporter:
            GLundh
            Archiver:
            Jenkins Service Account

              Created:
              Updated:
              Resolved:
              Archived: