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

Copy Artifacts Plugin Throws "IOException: Pipe is already closed"

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Component/s: copyartifact-plugin, core
    • Labels:
      None
    • Environment:
      Windows XP SP3, Sun JRE 1.6.25
    • Similar Issues:

      Description

      Since updating to Jenkins 1.409 and Copy Artifacts Plugin 1.16, build jobs fail with an IOException when copying build artifacts from the Master to the current Slave.

      ERROR: Failed to copy artifacts from ABC Build with filter: _tests\UnitTests\bin\Debug**
      java.io.IOException: Pipe is already closed
      at hudson.remoting.PipeWindow.checkDeath(PipeWindow.java:83)
      at hudson.remoting.PipeWindow$Real.get(PipeWindow.java:165)
      at hudson.remoting.ProxyOutputStream._write(ProxyOutputStream.java:118)
      at hudson.remoting.ProxyOutputStream.write(ProxyOutputStream.java:103)
      at java.io.BufferedOutputStream.flushBuffer(Unknown Source)
      at java.io.BufferedOutputStream.write(Unknown Source)
      at java.util.zip.DeflaterOutputStream.deflate(Unknown Source)
      at java.util.zip.DeflaterOutputStream.write(Unknown Source)
      at java.util.zip.GZIPOutputStream.write(Unknown Source)
      at java.io.BufferedOutputStream.write(Unknown Source)
      at org.apache.tools.tar.TarBuffer.writeBlock(TarBuffer.java:410)
      at org.apache.tools.tar.TarBuffer.writeRecord(TarBuffer.java:351)
      at hudson.org.apache.tools.tar.TarOutputStream.writeEOFRecord(TarOutputStream.java:356)
      at hudson.org.apache.tools.tar.TarOutputStream.finish(TarOutputStream.java:137)
      at hudson.org.apache.tools.tar.TarOutputStream.close(TarOutputStream.java:149)
      at hudson.util.io.TarArchiver.close(TarArchiver.java:119)
      at hudson.FilePath.writeToTar(FilePath.java:1596)
      at hudson.FilePath.copyRecursiveTo(FilePath.java:1521)
      at hudson.FilePath.copyRecursiveTo(FilePath.java:1450)
      at hudson.plugins.copyartifact.FilePathCopyMethod.copyAll(FilePathCopyMethod.java:51)
      at hudson.plugins.copyartifact.CopyArtifact.perform(CopyArtifact.java:225)
      at hudson.plugins.copyartifact.CopyArtifact.perform(CopyArtifact.java:199)
      at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
      at hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:649)
      at hudson.model.Build$RunnerImpl.build(Build.java:177)
      at hudson.model.Build$RunnerImpl.doRun(Build.java:139)
      at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:423)
      at hudson.model.Run.run(Run.java:1362)
      at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
      at hudson.model.ResourceController.execute(ResourceController.java:88)
      at hudson.model.Executor.run(Executor.java:145)
      Caused by: 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)
      at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
      at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
      at java.util.concurrent.FutureTask.run(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      at java.lang.Thread.run(Unknown Source)
      Caused by: hudson.remoting.FastPipedInputStream$ClosedBy: The pipe was closed at...
      at hudson.remoting.FastPipedInputStream.close(FastPipedInputStream.java:112)
      at hudson.FilePath$32.invoke(FilePath.java:1517)
      at hudson.FilePath$32.invoke(FilePath.java:1511)
      at hudson.FilePath$FileCallableWrapper.call(FilePath.java:1956)
      at hudson.remoting.UserRequest.perform(UserRequest.java:118)
      at hudson.remoting.UserRequest.perform(UserRequest.java:48)
      at hudson.remoting.Request$2.run(Request.java:270)
      at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
      at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
      at java.util.concurrent.FutureTask.run(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      at hudson.remoting.Engine$1$1.run(Engine.java:58)
      ... 1 more

      The Slaves are running as Windows Services under the Local System account. The slave.jar files have been updated to 1.409.

      The IOException is thrown no matter if the service is running under the Local System account, the Network Service account, under a Windows domain user account, or with desktop interaction enabled (see https://issues.jenkins-ci.org/browse/JENKINS-9456).

      If the Slave is started from a DOS prompt (java -Xrs -jar slave.jar -noCertificateCheck -jnlpUrl "https://buildserver.example.com/computer/esxi-01%20XP08/slave-agent.jnlp") the issue does not occur. The DOS prompt is started by a Windows domain user.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                jglick Jesse Glick
                Reporter:
                dw Dirk Weinhardt
              • Votes:
                9 Vote for this issue
                Watchers:
                19 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: