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

Copy to slave fails and getting error message "Pipe is already closed"

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Blocker Blocker
    • copy-to-slave-plugin
    • Master: RHEL 6.6 x64
      Slave: Window 2008 x64

      After upgrading the latest jenkins version, getting continuous error message ""Pipe is already closed" while trying to access from master to slave. This is really scratch our heads. Now, we have jenkins version "1.596". Please look at this issue asap as this blocks our day to day work.

      "[copy-to-slave] Copying ' .pl, Include//, noarch/*/, .jar, *.zip, Test-XML//, tools-linux/*/, tools-solaris/*/, tools-windows/*/ ', excluding nothing, from 'file:/var/lib/jenkins/userContent/' on the master to 'file:/C:/Test/' on 'WIN2K8-X64'.
      FATAL: Pipe is already closed
      java.io.IOException: Pipe is already closed
      at hudson.remoting.PipeWindow.checkDeath(PipeWindow.java:108)
      at hudson.remoting.PipeWindow$Real.get(PipeWindow.java:203)
      at hudson.remoting.ProxyOutputStream._write(ProxyOutputStream.java:141)
      at hudson.remoting.ProxyOutputStream.write(ProxyOutputStream.java:109)
      at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
      at java.io.BufferedOutputStream.write(BufferedOutputStream.java:126)
      at com.jcraft.jzlib.DeflaterOutputStream.deflate(DeflaterOutputStream.java:144)
      at com.jcraft.jzlib.DeflaterOutputStream.write(DeflaterOutputStream.java:102)
      at java.io.BufferedOutputStream.write(BufferedOutputStream.java:122)
      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:125)
      at com.michelin.cio.hudson.plugins.copytoslave.MyFilePath.writeToTar(MyFilePath.java:230)
      at com.michelin.cio.hudson.plugins.copytoslave.MyFilePath.copyRecursiveTo(MyFilePath.java:143)
      at com.michelin.cio.hudson.plugins.copytoslave.CopyToSlaveBuildWrapper.setUp(CopyToSlaveBuildWrapper.java:133)
      at hudson.model.Build$BuildExecution.doRun(Build.java:154)
      at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:533)
      at hudson.model.Run.execute(Run.java:1759)
      at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
      at hudson.model.ResourceController.execute(ResourceController.java:89)
      at hudson.model.Executor.run(Executor.java:240)
      Caused by: java.io.IOException: Pipe is already closed
      at hudson.remoting.FastPipedOutputStream.write(FastPipedOutputStream.java:153)
      at hudson.remoting.FastPipedOutputStream.write(FastPipedOutputStream.java:137)
      at hudson.remoting.ProxyOutputStream$Chunk$1.run(ProxyOutputStream.java:264)
      at hudson.remoting.PipeWriter$1.run(PipeWriter.java:158)
      at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
      at java.util.concurrent.FutureTask.run(Unknown Source)
      at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:111)
      at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68)
      at java.util.concurrent.FutureTask.run(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      at hudson.remoting.Engine$1$1.run(Engine.java:63)
      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 com.michelin.cio.hudson.plugins.copytoslave.MyFilePath$2.invoke(MyFilePath.java:138)
      at com.michelin.cio.hudson.plugins.copytoslave.MyFilePath$2.invoke(MyFilePath.java:130)
      at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2677)
      at hudson.remoting.UserRequest.perform(UserRequest.java:121)
      at hudson.remoting.UserRequest.perform(UserRequest.java:49)
      at hudson.remoting.Request$2.run(Request.java:324)
      ... 6 more

      Help us localize this page

          [JENKINS-26353] Copy to slave fails and getting error message "Pipe is already closed"

          Markus Heiden added a comment -

          I got the same problem.

          The problem is that the plugin im my case copies the file with read-only privileges (444) into the destination directory. So if the file is already there, the plugin fails to overwrite it.

          I checked the directory privileges where the file resides and they are ok (755). I checked the umask of the user used to execute the job and it is ok (0022).

          If I delete the file or change its privileges to 644 the plugin succeeds to copy the file. But it uses 444 again, so I have to do this after each job run.

          Markus Heiden added a comment - I got the same problem. The problem is that the plugin im my case copies the file with read-only privileges (444) into the destination directory. So if the file is already there, the plugin fails to overwrite it. I checked the directory privileges where the file resides and they are ok (755). I checked the umask of the user used to execute the job and it is ok (0022). If I delete the file or change its privileges to 644 the plugin succeeds to copy the file. But it uses 444 again, so I have to do this after each job run.

          Markus Heiden added a comment -

          I used a shell script build step as workaround, which sets the privileges to 644 after the file has been copied to the slave. So after doing this once manual, every worked again.

          Markus Heiden added a comment - I used a shell script build step as workaround, which sets the privileges to 644 after the file has been copied to the slave. So after doing this once manual, every worked again.

          Atul Kote added a comment -

          Thanks Markus. I will check it on my environment and let you know about the result. We have jenkins server on Linux box and client is Windows machine.

          Atul Kote added a comment - Thanks Markus. I will check it on my environment and let you know about the result. We have jenkins server on Linux box and client is Windows machine.

            svvivek Vivekanand SV
            atul_kote Atul Kote
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: