-
Bug
-
Resolution: Fixed
-
Critical
-
None
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).