[ https://issues.jenkins-ci.org/browse/JENKINS-13280?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=160998#comment-160998 ]
Brian Morris commented on JENKINS-13280: ---------------------------------------- I am not familiar with the proper way to propose patches for git projects, nor have I attempted to compile Jenkins with this patch, but I believe this simple change would resolve this issue: --- FilePath.java.orig 2012-03-29 23:09:54.000000000 -0700 +++ FilePath.java 2012-03-29 23:10:36.000000000 -0700 @@ -1805,12 +1805,12 @@ new FilePath(f).symlinkTo(te.getLinkName(), TaskListener.NULL); } else { IOUtils.copy(t,f); - } - f.setLastModified(te.getModTime().getTime()); - int mode = te.getMode()&0777; - if(mode!=0 && !Functions.isWindows()) // be defensive - _chmod(f,mode); + f.setLastModified(te.getModTime().getTime()); + int mode = te.getMode()&0777; + if(mode!=0 && !Functions.isWindows()) // be defensive + _chmod(f,mode); + } } } } catch(IOException e) { > Fix for JENKINS-9118 breaks archival if symlink referent is in the archive > -------------------------------------------------------------------------- > > Key: JENKINS-13280 > URL: https://issues.jenkins-ci.org/browse/JENKINS-13280 > Project: Jenkins > Issue Type: Bug > Components: clone-workspace > Reporter: Brian Morris > Assignee: abayer > > With the fix for JENKINS-9118, the archival process now attempts to preserve > symlinks, but in doing so it now fails to archive if the referent of a > symlink doesn't exist (yet). The problem is that it is apparently trying to > chmod the symlink (which it shouldn't be doing to extract a symlink anyway) > but that fails if the target of the symlink doesn't exist. In our case it > was because the target was also in the archive and hadn't been extracted yet. > Archiving artifacts > ERROR: Failed to archive artifacts: > linux86-deploy/*,solaris2-cross-linux86/*,test21/products/*,src/configuration/defaults/**/*,src/target/**/* > hudson.util.IOException2: hudson.util.IOException2: Failed to extract > /home/jarvis/probebuild/jenkins/workspace/Tools_Linux86_Solaris2_P44/linux86-deploy/*,solaris2-cross-linux86/*,test21/products/*,src/configuration/defaults/**/*,src/target/**/* > at hudson.FilePath.readFromTar(FilePath.java:1817) > at hudson.FilePath.copyRecursiveTo(FilePath.java:1729) > at hudson.tasks.ArtifactArchiver.perform(ArtifactArchiver.java:116) > at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19) > at > hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:703) > at > hudson.model.AbstractBuild$AbstractRunner.performAllBuildSteps(AbstractBuild.java:678) > at > hudson.model.AbstractBuild$AbstractRunner.performAllBuildSteps(AbstractBuild.java:656) > at hudson.model.Build$RunnerImpl.post2(Build.java:162) > at > hudson.model.AbstractBuild$AbstractRunner.post(AbstractBuild.java:625) > at hudson.model.Run.run(Run.java:1435) > 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: java.io.IOException: Failed to chmod > /home/hal/jenkins/home/jobs/Tools_Linux86_Solaris2_P44/builds/2012-03-28_16-02-44/archive/linux86-deploy/.bochsrc > : No such file or directory > at hudson.FilePath._chmod(FilePath.java:1248) > at hudson.FilePath.readFromTar(FilePath.java:1813) > ... 12 more > at hudson.FilePath.copyRecursiveTo(FilePath.java:1736) > at hudson.tasks.ArtifactArchiver.perform(ArtifactArchiver.java:116) > at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19) > at > hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:703) > at > hudson.model.AbstractBuild$AbstractRunner.performAllBuildSteps(AbstractBuild.java:678) > at > hudson.model.AbstractBuild$AbstractRunner.performAllBuildSteps(AbstractBuild.java:656) > at hudson.model.Build$RunnerImpl.post2(Build.java:162) > at > hudson.model.AbstractBuild$AbstractRunner.post(AbstractBuild.java:625) > at hudson.model.Run.run(Run.java:1435) > 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: java.util.concurrent.ExecutionException: java.io.IOException: Pipe > is already closed > at hudson.remoting.Channel$2.adapt(Channel.java:714) > at hudson.remoting.Channel$2.adapt(Channel.java:709) > at hudson.remoting.FutureAdapter.get(FutureAdapter.java:59) > at hudson.FilePath.copyRecursiveTo(FilePath.java:1732) > ... 11 more > Caused by: java.io.IOException: Pipe is already closed > at hudson.remoting.PipeWindow.checkDeath(PipeWindow.java:83) > at hudson.remoting.PipeWindow$Real.get(PipeWindow.java:171) > at hudson.remoting.ProxyOutputStream._write(ProxyOutputStream.java:118) > at hudson.remoting.ProxyOutputStream.write(ProxyOutputStream.java:103) > at > java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82) > at java.io.BufferedOutputStream.write(BufferedOutputStream.java:126) > at > java.util.zip.DeflaterOutputStream.deflate(DeflaterOutputStream.java:178) > at > java.util.zip.DeflaterOutputStream.write(DeflaterOutputStream.java:135) > at java.util.zip.GZIPOutputStream.write(GZIPOutputStream.java:89) > 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:119) > at hudson.FilePath.writeToTar(FilePath.java:1783) > at hudson.FilePath.access$1000(FilePath.java:166) > at hudson.FilePath$36.invoke(FilePath.java:1722) > at hudson.FilePath$36.invoke(FilePath.java:1719) > 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(FutureTask.java:334) > at java.util.concurrent.FutureTask.run(FutureTask.java:166) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) > at java.lang.Thread.run(Thread.java:636) > 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:211) > at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) > ... 5 more > Caused by: hudson.remoting.FastPipedInputStream$ClosedBy: The pipe was closed > at... > at > hudson.remoting.FastPipedInputStream.close(FastPipedInputStream.java:112) > at java.io.FilterInputStream.close(FilterInputStream.java:172) > at java.util.zip.InflaterInputStream.close(InflaterInputStream.java:227) > at java.util.zip.GZIPInputStream.close(GZIPInputStream.java:126) > at org.apache.tools.tar.TarBuffer.close(TarBuffer.java:456) > at > hudson.org.apache.tools.tar.TarInputStream.close(TarInputStream.java:110) > at hudson.FilePath.readFromTar(FilePath.java:1824) > at hudson.FilePath.copyRecursiveTo(FilePath.java:1729) > at hudson.tasks.ArtifactArchiver.perform(ArtifactArchiver.java:116) > at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19) > at > hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:703) > at > hudson.model.AbstractBuild$AbstractRunner.performAllBuildSteps(AbstractBuild.java:678) > at > hudson.model.AbstractBuild$AbstractRunner.performAllBuildSteps(AbstractBuild.java:656) > at hudson.model.Build$RunnerImpl.post2(Build.java:162) > at > hudson.model.AbstractBuild$AbstractRunner.post(AbstractBuild.java:625) > at hudson.model.Run.run(Run.java:1435) > at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46) > at hudson.model.ResourceController.execute(ResourceController.java:88) > at hudson.model.Executor.run(Executor.java:238) -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jenkins-ci.org/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira