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

Copy failed on windows machine because of timestamp

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Major Major
    • copyartifact-plugin
    • None
    • Jenkins ver. 1.460, debian master.
      XP slave.

      After upgrading Copy artifacts plugin to 1.22 I have some problems of copy on a windows XP slave.
      Downgrading to 1.21 solves the problem.

      This is the same issue as https://issues.jenkins-ci.org/browse/JENKINS-11073

      ERROR: Failed to copy artifacts from job with filter: */
      hudson.util.IOException2: Failed to copy /var/lib/jenkins/jobs/(filepath).html to C:\jenkins\workspace(filepath).html
      at hudson.plugins.copyartifact.FingerprintingCopyMethod.copyOne(FingerprintingCopyMethod.java:91)
      at hudson.plugins.copyartifact.FingerprintingCopyMethod.copyAll(FingerprintingCopyMethod.java:63)
      at hudson.plugins.copyartifact.CopyArtifact.perform(CopyArtifact.java:243)
      at hudson.plugins.copyartifact.CopyArtifact.perform(CopyArtifact.java:211)
      at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
      at hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:705)
      at hudson.model.Build$RunnerImpl.build(Build.java:178)
      at hudson.model.Build$RunnerImpl.doRun(Build.java:139)
      at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:475)
      at hudson.model.Run.run(Run.java:1421)
      at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
      at hudson.model.ResourceController.execute(ResourceController.java:88)
      at hudson.model.Executor.run(Executor.java:238)
      Caused by: hudson.util.IOException2: remote file operation failed: C:\jenkins\workspace(filepath).html at hudson.remoting.Channel@2b0857d2:build-w7
      at hudson.FilePath.act(FilePath.java:828)
      at hudson.FilePath.act(FilePath.java:814)
      at hudson.FilePath.touch(FilePath.java:1160)
      at hudson.plugins.copyartifact.FingerprintingCopyMethod.copyOne(FingerprintingCopyMethod.java:79)
      ... 12 more
      Caused by: java.io.IOException: Failed to set the timestamp of C:\jenkins\workspace(filepath).html to 1334755712000
      at hudson.FilePath$19.invoke(FilePath.java:1166)
      at hudson.FilePath$19.invoke(FilePath.java:1160)
      at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2154)
      at hudson.remoting.UserRequest.perform(UserRequest.java:118)
      at hudson.remoting.UserRequest.perform(UserRequest.java:48)
      at hudson.remoting.Request$2.run(Request.java:287)
      at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
      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:60)
      at java.lang.Thread.run(Unknown Source)
      Build step 'Copy artifacts from another project' marked build as failure

          [JENKINS-13515] Copy failed on windows machine because of timestamp

          Code changed in jenkins
          User: Jesse Glick
          Path:
          src/main/java/hudson/plugins/copyartifact/FingerprintingCopyMethod.java
          http://jenkins-ci.org/commit/copyartifact-plugin/d86690cc2659fd2efa992391e4c216d7635db8e3
          Log:
          [FIXED JENKINS-13515] FingerprintingCopyMethod.copyOne can fail on Windows due to timestamp.

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: src/main/java/hudson/plugins/copyartifact/FingerprintingCopyMethod.java http://jenkins-ci.org/commit/copyartifact-plugin/d86690cc2659fd2efa992391e4c216d7635db8e3 Log: [FIXED JENKINS-13515] FingerprintingCopyMethod.copyOne can fail on Windows due to timestamp.

          Jesse Glick added a comment -

          Releasing 1.23 for this fix.

          Jesse Glick added a comment - Releasing 1.23 for this fix.

          Chris Nogradi added a comment -

          I just installed Jenkins 1.483 and updated the Copy Artifacts plugin to 1.23 and got this error:

          hudson.util.IOException2: Failed to copy /srv/jenkins/jobs/ADL_Release/builds/2012-09-25_11-14-25/archive/adl.zip to d:/hudson/workspace/G2XXX_Release/LRU/GDU/Target/hw_tst/label/GDU_RELEASE/adl.zip
          at hudson.plugins.copyartifact.FingerprintingCopyMethod.copyOne(FingerprintingCopyMethod.java:102)
          at hudson.plugins.copyartifact.FingerprintingCopyMethod.copyAll(FingerprintingCopyMethod.java:65)
          at hudson.plugins.copyartifact.CopyArtifact.perform(CopyArtifact.java:243)
          at hudson.plugins.copyartifact.CopyArtifact.perform(CopyArtifact.java:215)
          at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
          at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:717)
          at hudson.model.Build$BuildExecution.build(Build.java:199)
          at hudson.model.Build$BuildExecution.doRun(Build.java:160)
          at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499)
          at hudson.model.Run.execute(Run.java:1502)
          at hudson.matrix.MatrixRun.run(MatrixRun.java:146)
          at hudson.model.ResourceController.execute(ResourceController.java:88)
          at hudson.model.Executor.run(Executor.java:236)
          Caused by: hudson.util.IOException2: remote file operation failed: d:/hudson/workspace/G2XXX_Release/LRU/GDU/Target/hw_tst/label/GDU_RELEASE/adl.zip at hudson.remoting.Channel@71b4f563:OLAWPB-AVNHUD00
          at hudson.FilePath.act(FilePath.java:848)
          at hudson.FilePath.act(FilePath.java:825)
          at hudson.FilePath.touch(FilePath.java:1243)
          at hudson.plugins.copyartifact.FingerprintingCopyMethod.copyOne(FingerprintingCopyMethod.java:83)
          ... 12 more
          Caused by: java.io.IOException: Failed to set the timestamp of d:\hudson\workspace\G2XXX_Release\LRU\GDU\Target\hw_tst\label\GDU_RELEASE\adl.zip to 1348589954000
          at hudson.FilePath$19.invoke(FilePath.java:1249)
          at hudson.FilePath$19.invoke(FilePath.java:1243)
          at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2273)
          at hudson.remoting.UserRequest.perform(UserRequest.java:118)
          at hudson.remoting.UserRequest.perform(UserRequest.java:48)
          at hudson.remoting.Request$2.run(Request.java:287)
          at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
          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:60)
          at java.lang.Thread.run(Unknown Source)
          Build step 'Copy artifacts from another project' marked build as failure
          Archiving artifacts

          I was fine with Copy Artifacts v 1.21

          Chris Nogradi added a comment - I just installed Jenkins 1.483 and updated the Copy Artifacts plugin to 1.23 and got this error: hudson.util.IOException2: Failed to copy /srv/jenkins/jobs/ADL_Release/builds/2012-09-25_11-14-25/archive/adl.zip to d:/hudson/workspace/G2XXX_Release/LRU/GDU/Target/hw_tst/label/GDU_RELEASE/adl.zip at hudson.plugins.copyartifact.FingerprintingCopyMethod.copyOne(FingerprintingCopyMethod.java:102) at hudson.plugins.copyartifact.FingerprintingCopyMethod.copyAll(FingerprintingCopyMethod.java:65) at hudson.plugins.copyartifact.CopyArtifact.perform(CopyArtifact.java:243) at hudson.plugins.copyartifact.CopyArtifact.perform(CopyArtifact.java:215) at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19) at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:717) at hudson.model.Build$BuildExecution.build(Build.java:199) at hudson.model.Build$BuildExecution.doRun(Build.java:160) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1502) at hudson.matrix.MatrixRun.run(MatrixRun.java:146) at hudson.model.ResourceController.execute(ResourceController.java:88) at hudson.model.Executor.run(Executor.java:236) Caused by: hudson.util.IOException2: remote file operation failed: d:/hudson/workspace/G2XXX_Release/LRU/GDU/Target/hw_tst/label/GDU_RELEASE/adl.zip at hudson.remoting.Channel@71b4f563:OLAWPB-AVNHUD00 at hudson.FilePath.act(FilePath.java:848) at hudson.FilePath.act(FilePath.java:825) at hudson.FilePath.touch(FilePath.java:1243) at hudson.plugins.copyartifact.FingerprintingCopyMethod.copyOne(FingerprintingCopyMethod.java:83) ... 12 more Caused by: java.io.IOException: Failed to set the timestamp of d:\hudson\workspace\G2XXX_Release\LRU\GDU\Target\hw_tst\label\GDU_RELEASE\adl.zip to 1348589954000 at hudson.FilePath$19.invoke(FilePath.java:1249) at hudson.FilePath$19.invoke(FilePath.java:1243) at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2273) at hudson.remoting.UserRequest.perform(UserRequest.java:118) at hudson.remoting.UserRequest.perform(UserRequest.java:48) at hudson.remoting.Request$2.run(Request.java:287) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) 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:60) at java.lang.Thread.run(Unknown Source) Build step 'Copy artifacts from another project' marked build as failure Archiving artifacts I was fine with Copy Artifacts v 1.21

          Jesse Glick added a comment -

          @cnogradi: Are you perhaps using Cygwin or similar? Like similar code in core, this patch makes the error fatal on Unix but just logs a warning on Windows. It does the OS check using Functions.isWindows(), which just checks File.pathSeparatorChar==';'.

          Jesse Glick added a comment - @cnogradi: Are you perhaps using Cygwin or similar? Like similar code in core, this patch makes the error fatal on Unix but just logs a warning on Windows. It does the OS check using Functions.isWindows() , which just checks File.pathSeparatorChar==';' .

          Chris Nogradi added a comment -

          The master source is linux (/srv/jenkins/jobs/ADL_Release/builds/2012-09-25_11-14-25/archive/adl.zip) the slave target is windows server 2008 R2 (d:/hudson/workspace/G2XXX_Release/LRU/GDU/Target/hw_tst/label/GDU_RELEASE/adl.zip). I do use cygwin on the slaves for building but I don't think that would affect the plugin since it runs before the shell is launched:

          Copied 2 artifacts from "ADL_Release" build number 4754
          [G2XXX_Release] $ sh -xe C:\Users\AVNHUD~1\AppData\Local\Temp\hudson394429127517277609.sh

          Chris Nogradi added a comment - The master source is linux (/srv/jenkins/jobs/ADL_Release/builds/2012-09-25_11-14-25/archive/adl.zip) the slave target is windows server 2008 R2 (d:/hudson/workspace/G2XXX_Release/LRU/GDU/Target/hw_tst/label/GDU_RELEASE/adl.zip). I do use cygwin on the slaves for building but I don't think that would affect the plugin since it runs before the shell is launched: Copied 2 artifacts from "ADL_Release" build number 4754 [G2XXX_Release] $ sh -xe C:\Users\AVNHUD~1\AppData\Local\Temp\hudson394429127517277609.sh

          Jesse Glick added a comment -

          @cnogradi: what builders such as shell are used in the job is irrelevant. All that matters is the value of File.pathSeparatorChar in the slave JVM. Can you look up the system property path.separator in the slave’s diagnosis page (/computer/*/systemInfo)? I suspect it is returning : and so Jenkins is assuming the slave is Unix, yet the underlying Windows filesystem bugs (including inability to “touch”) remain.

          Jesse Glick added a comment - @cnogradi: what builders such as shell are used in the job is irrelevant. All that matters is the value of File.pathSeparatorChar in the slave JVM. Can you look up the system property path.separator in the slave’s diagnosis page ( /computer/*/systemInfo )? I suspect it is returning : and so Jenkins is assuming the slave is Unix, yet the underlying Windows filesystem bugs (including inability to “touch”) remain.

          Chris Nogradi added a comment -

          Sorry about more ignorance regarding the builder shells. In the slave JVMs, path.separator is set to ';' for both slaves per Jenkins System Information pages for slave nodes.

          Chris Nogradi added a comment - Sorry about more ignorance regarding the builder shells. In the slave JVMs, path.separator is set to ';' for both slaves per Jenkins System Information pages for slave nodes.

          Jesse Glick added a comment -

          Ah, I think I see the problem: the OS check is done on master whereas the plugin cares about the slave only.

          Rather than trying to look up the OS on the slave, I guess it is safer and simpler to just make the touch optional regardless of platform.

          Jesse Glick added a comment - Ah, I think I see the problem: the OS check is done on master whereas the plugin cares about the slave only. Rather than trying to look up the OS on the slave, I guess it is safer and simpler to just make the touch optional regardless of platform.

          Code changed in jenkins
          User: Jesse Glick
          Path:
          src/main/java/hudson/plugins/copyartifact/FingerprintingCopyMethod.java
          http://jenkins-ci.org/commit/copyartifact-plugin/d767e0071561287096790974503e1ed744ab1c83
          Log:
          [FIXED JENKINS-13515] Downgrade touch failure to warning regardless of platform.

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: src/main/java/hudson/plugins/copyartifact/FingerprintingCopyMethod.java http://jenkins-ci.org/commit/copyartifact-plugin/d767e0071561287096790974503e1ed744ab1c83 Log: [FIXED JENKINS-13515] Downgrade touch failure to warning regardless of platform.

          Jesse Glick added a comment -

          Try 1.24.

          Jesse Glick added a comment - Try 1.24.

            jglick Jesse Glick
            blatinville Bertrand Latinville
            Votes:
            15 Vote for this issue
            Watchers:
            19 Start watching this issue

              Created:
              Updated:
              Resolved: