Skip to content

Commit

Permalink
Merge pull request #37570 from famod/jacoco-report-serialize
Browse files Browse the repository at this point in the history
Prevent concurrently running Jacoco ReportCreators to avoid report corruption
  • Loading branch information
famod committed Dec 10, 2023
2 parents 90c6b68 + 404ff07 commit 5d4c70a
Showing 1 changed file with 10 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,16 @@ public ReportCreator(ReportInfo reportInfo, JacocoConfig config) {

@Override
public void run() {
// Ugly workaround:
// Multiple ReportCreator shutdown hooks might run concurrently, possibly corrupting the report file(s) - e.g. when using @TestProfile.
// By locking on a class from the parent CL, all hooks are "serialized", one after another.
// In the long run there should only be as many hooks as there are different Jacoco configs...usually there will be only one config anyway!
synchronized (ExecFileLoader.class) {
doRun();
}
}

private void doRun() {
File targetdir = new File(reportInfo.reportDir);
targetdir.mkdirs();
try {
Expand Down

0 comments on commit 5d4c70a

Please sign in to comment.