jenkinsci/jacoco-plugin — pull request #45 by basil (2014-08-26 20:44:06+00:00)
Title: JENKINS-24450 JacocoPublisher serializes concurrent builds waiting for checkpoint

See the bug for a description of the problem and the cause.

The solution is to switch from BuildStepMonitor.BUILD to BuildStepMonitor.NONE. This necessitates auditing the code for the assumption that all previous builds have completed and making the necessary adjustments.

To accomplish the above, we grepped for Job#getLastBuild, Job#getFirstBuild, Run#getPreviousBuild(), Run#getPreviousBuildInProgress, and Run#getPreviousBuiltBuild throughout the codebase. We then examined all the methods that use this functionality and adapted them to work under the new assumption that previous builds may be still running.

In particular, we made the utility methods in JacocoBuildAction and JacocoProjectAction skip over builds that are in progress while building the data model for the coverage graph. We also updated the portlet classes JacocoLoadData and Utils to start at the last completed build (instead of the last build, which could be currently running) and to skip over currently running builds when iterating backwards in time.