[ 
https://issues.jenkins-ci.org/browse/JENKINS-13202?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=162566#comment-162566
 ] 

SCM/JIRA link daemon commented on JENKINS-13202:
------------------------------------------------

Code changed in jenkins
User: David Reiss
Path:
 changelog.html
 core/src/main/java/hudson/FilePath.java
 core/src/test/java/hudson/FilePathTest.java
http://jenkins-ci.org/commit/jenkins/e15b2e19e394f5d63183f01a2e72a14115a0c370
Log:
  [FIXED JENKINS-13202] Don't set mtime or mode on symlinks

Previously, the untar code tries to set the last modified time and mode
on every untarred file.  However, if the tar contains a broken symlink,
or a symlink that points to a file that has not been untarred yet, the
time/mode setting would fail on the broken symlink.

Symlinks don't have meaningful modified times or modes of their own, so
only set these values on non-symlinks.

Rename the file "a" in the test to expose the bug.





                
> Artifact archiving from an ssh slave fails if symlinks are present
> ------------------------------------------------------------------
>
>                 Key: JENKINS-13202
>                 URL: https://issues.jenkins-ci.org/browse/JENKINS-13202
>             Project: Jenkins
>          Issue Type: Bug
>          Components: core
>    Affects Versions: current
>         Environment: Slave must be a "Unix via SSH" slave.  I suspect the 
> master must be Unix-based also.  I tested with both the master and slave on 
> Linux.
>            Reporter: David Reiss
>              Labels: artifact
>
> When archiving artifacts from a job executed on a "Unix via SSH" slave, if a 
> symlink is present and archived before its target, the archiving will fail.  
> It looks like the master is trying to chmod the local symlink (because it has 
> executable permissions stored in the tar used to do the remote copy), but 
> that fails because the target doesn't exist yet, and the exception aborts the 
> archiving.  I think the solution is to just not chmod symlinks, since they 
> don't have modes of their own.  This was a regression from 1.455 to 1.456.  I 
> suspect the fixes for JENKINS-9118 are the cause.
> To reproduce this problem, install the Jenkins master on a Linux machine and 
> add a "Unix via SSH" slave that is also a Linux machine.  Create a job with 
> the following build script:
> {noformat}
> rm -rf stuff
> mkdir stuff
> cd stuff
> touch zzfile
> ln -s zzfile aafile
> ln -s zzfile bbfile
> {noformat}
> Restrict this project to build on the slave.  Set up archiving for "stuff/*". 
>  Run the job.  The job will complete successfully, but archiving will abort 
> partway though with a stack trace in the console.
> {noformat}
> Archiving artifacts
> ERROR: Failed to archive artifacts: stuff/*
> hudson.util.IOException2: Failed to extract 
> /tmp/jenkins-slave-home/workspace/create_symlinks/stuff/*
>       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 
> /tmp/jenkins-home/jobs/create_symlinks/builds/2012-03-21_16-53-15/archive/stuff/aafile
>  : No such file or directory
>       at hudson.FilePath._chmod(FilePath.java:1248)
>       at hudson.FilePath.readFromTar(FilePath.java:1813)
>       ... 12 more
> {noformat}

--
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

        

Reply via email to