Issue Type: Bug Bug
Assignee: Jesse Glick
Components: core
Created: 27/Mar/14 10:10 PM
Description:

Sometimes "log rotation" fails with an exception like

SEVERE  hudson.model.Run#execute: Failed to rotate log
java.io.IOException: .../jobs/.../modules/...$.../builds/2013-... looks to have already been deleted
    at hudson.model.Run.delete(Run.java:1432)
    at hudson.maven.MavenModuleSetBuild.delete(MavenModuleSetBuild.java:420)
    at hudson.tasks.LogRotator.perform(LogRotator.java:136)
    at hudson.model.Job.logRotate(Job.java:437)
    at hudson.maven.MavenModuleSet.logRotate(MavenModuleSet.java:851)
    at hudson.model.Run.execute(Run.java:1728)
    at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:509)
    at hudson.model.ResourceController.execute(ResourceController.java:88)
    at hudson.model.Executor.run(Executor.java:246)

Usually MavenModuleSetBuild is involved, perhaps suggesting a problem with deleted or skipped module builds (I cannot reproduce in either scenario), though I think I have also seen this happen for freestyle builds. Unclear whether the directory actually exists but File.isDirectory thinks it does not (the code originally tried to delete the dir without checking this and failed with "... is in use"); or whether the directory was actually deleted earlier but this Run was not cleaned up properly for some reason.

Hypothesis: AbstractLazyLoadRunMap.idOnDisk is not removed by removeValue, called from AbstractProject.removeRun (from Run.delete). Perhaps something is later resurrecting the AbstractBuild from idOnDisk, making it again available for another round of log rotation? But if the actual directory was deleted, it is hard to see how: load would just fail.

Or perhaps Run.delete is the race condition: the run is removed from the parent after its directory has been deleted. The method is synchronized, but that does not help if two copies of the Run exist, which might happen due to other lazy-loading bugs.

Diagnostics added to date:

Project: Jenkins
Labels: exception log-rotator
Priority: Major Major
Reporter: Jesse Glick
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators.
For more information on JIRA, see: http://www.atlassian.com/software/jira

--
You received this message because you are subscribed to the Google Groups "Jenkins Issues" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to