From 476a45857579cd4f7b31b1189733c212ae64aa81 Mon Sep 17 00:00:00 2001 From: ulofiai Date: Sat, 15 Aug 2026 05:18:29 +0800 Subject: [PATCH] Fix thread pool leak when build plan initialization fails Signed-off-by: ulofiai --- .../lifecycle/internal/concurrent/BuildPlanExecutor.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/impl/maven-core/src/main/java/org/apache/maven/lifecycle/internal/concurrent/BuildPlanExecutor.java b/impl/maven-core/src/main/java/org/apache/maven/lifecycle/internal/concurrent/BuildPlanExecutor.java index 3b3ab04f8106..144ca8ff16b6 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/lifecycle/internal/concurrent/BuildPlanExecutor.java +++ b/impl/maven-core/src/main/java/org/apache/maven/lifecycle/internal/concurrent/BuildPlanExecutor.java @@ -211,10 +211,10 @@ class BuildContext implements AutoCloseable { session.getProjects().size()); // Propagate the parallel flag to the root session session.setParallel(threads > 1); - this.executor = new PhasingExecutor(Executors.newFixedThreadPool(threads, new BuildThreadFactory())); - // build initial plan + // Build the initial plan before creating the executor so constructor failures cannot leak it. this.plan = buildInitialPlan(taskSegments); + this.executor = new PhasingExecutor(Executors.newFixedThreadPool(threads, new BuildThreadFactory())); } BuildContext() {