This repository has been archived by the owner on Nov 19, 2024. It is now read-only.
JENKINS-24450 JacocoPublisher serializes concurrent builds waiting for checkpoint #45
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.