You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by gn...@apache.org on 2023/11/20 12:45:06 UTC
(maven) branch master updated: Fix not closed ForkJoinPools (#1319)
This is an automated email from the ASF dual-hosted git repository.
gnodet pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven.git
The following commit(s) were added to refs/heads/master by this push:
new 143af9b085 Fix not closed ForkJoinPools (#1319)
143af9b085 is described below
commit 143af9b085d53e324131374a499752c1ecb1a7d2
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Mon Nov 20 13:44:59 2023 +0100
Fix not closed ForkJoinPools (#1319)
---
.../maven/project/DefaultProjectBuilder.java | 26 ++++++++++++++++------
1 file changed, 19 insertions(+), 7 deletions(-)
diff --git a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
index 4008ca50b4..878b989633 100644
--- a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
+++ b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
@@ -130,13 +130,17 @@ public class DefaultProjectBuilder implements ProjectBuilder {
@Override
public ProjectBuildingResult build(File pomFile, ProjectBuildingRequest request) throws ProjectBuildingException {
- return new BuildSession(request, false).build(pomFile, new FileModelSource(pomFile));
+ try (BuildSession bs = new BuildSession(request, false)) {
+ return bs.build(pomFile, new FileModelSource(pomFile));
+ }
}
@Override
public ProjectBuildingResult build(ModelSource modelSource, ProjectBuildingRequest request)
throws ProjectBuildingException {
- return new BuildSession(request, false).build(null, modelSource);
+ try (BuildSession bs = new BuildSession(request, false)) {
+ return bs.build(null, modelSource);
+ }
}
@Override
@@ -148,13 +152,17 @@ public class DefaultProjectBuilder implements ProjectBuilder {
@Override
public ProjectBuildingResult build(Artifact artifact, boolean allowStubModel, ProjectBuildingRequest request)
throws ProjectBuildingException {
- return new BuildSession(request, false).build(artifact, allowStubModel);
+ try (BuildSession bs = new BuildSession(request, false)) {
+ return bs.build(artifact, allowStubModel);
+ }
}
@Override
public List<ProjectBuildingResult> build(List<File> pomFiles, boolean recursive, ProjectBuildingRequest request)
throws ProjectBuildingException {
- return new BuildSession(request, true).build(pomFiles, recursive);
+ try (BuildSession bs = new BuildSession(request, true)) {
+ return bs.build(pomFiles, recursive);
+ }
}
static class InterimResult {
@@ -194,7 +202,7 @@ public class DefaultProjectBuilder implements ProjectBuilder {
}
}
- class BuildSession {
+ class BuildSession implements AutoCloseable {
private final ProjectBuildingRequest request;
private final RepositorySystemSession session;
private final List<RemoteRepository> repositories;
@@ -207,17 +215,21 @@ public class DefaultProjectBuilder implements ProjectBuilder {
this.session =
RepositoryUtils.overlay(request.getLocalRepository(), request.getRepositorySession(), repoSystem);
this.repositories = RepositoryUtils.toRepos(request.getRemoteRepositories());
+ this.forkJoinPool = new ForkJoinPool(getParallelism(request));
if (localProjects) {
this.modelPool = new ReactorModelPool();
this.transformerContextBuilder = modelBuilder.newTransformerContextBuilder();
- this.forkJoinPool = new ForkJoinPool(getParallelism(request));
} else {
this.modelPool = null;
this.transformerContextBuilder = null;
- this.forkJoinPool = null;
}
}
+ @Override
+ public void close() {
+ this.forkJoinPool.shutdownNow();
+ }
+
private int getParallelism(ProjectBuildingRequest request) {
int parallelism = DEFAULT_BUILDER_PARALLELISM;
try {