Hi,

we use the subversion plugin in version 1.39 and have 15 slaves with each 2 
executors to run the same job in parallel with different parameters. We 
start a batch of 200 builds where 30 builds run at the same time. Sometimes 
a build fails with the following exception:

2012-07-25 08:44:20.422 | Building remotely on ci-selenium08 in workspace 
/home/jenkins/builds/Jenkins/workspace/GEN-Selenium-test
2012-07-25 08:44:20.512 | Reverting 
/home/jenkins/builds/Jenkins/workspace/GEN-Selenium-test/.                      
                   <-- File on jenkins slave
2012-07-25 08:45:04.616 | Updating svn+ssh://svn.foo.bar/qs_automation/trunk
2012-07-25 08:45:10.744 | At revision 7136
2012-07-25 08:45:51.656 | java.io.IOException: Unable to delete 
/opt/biss/home/ci/jobs/GEN-Selenium-test/svnexternals.txt              <-- File 
on jenkins master
2012-07-25 08:45:51.657 |       at 
hudson.util.AtomicFileWriter.commit(AtomicFileWriter.java:112)
2012-07-25 08:45:51.657 |       at hudson.XmlFile.write(XmlFile.java:178)
2012-07-25 08:45:51.657 |       at 
hudson.scm.SubversionSCM.checkout(SubversionSCM.java:708)
2012-07-25 08:45:51.657 |       at 
hudson.model.AbstractProject.checkout(AbstractProject.java:1245)
2012-07-25 08:45:51.657 |       at 
hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:589)
2012-07-25 08:45:51.657 |       at 
jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
2012-07-25 08:45:51.657 |       at 
hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:494)
2012-07-25 08:45:51.657 |       at hudson.model.Run.execute(Run.java:1488)
2012-07-25 08:45:51.657 |       at 
hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
2012-07-25 08:45:51.657 |       at 
hudson.model.ResourceController.execute(ResourceController.java:88)
2012-07-25 08:45:51.658 |       at hudson.model.Executor.run(Executor.java:236)



This happens when two builds finish their svn checkout at the same time. 
The following method of hudson.scm.SubversionSCM saves the svnexternals.txt 
to the project's root dir and not into the workspace of a build. 

    /**
     * Gets the file that stores the externals.
     */
    private static File getExternalsFile(AbstractProject project) {
        return new File(project.getRootDir(),"svnexternals.txt");
    }

As I understand this, there will not be on svnexternals.txt for each 
workspace but one for all. 

Is this correct? If so, concurrent builds have a problem here.

Thanks for any advice...

Frederik

Reply via email to