From 4ae43198498e25a691030df490458821ba50506f Mon Sep 17 00:00:00 2001 From: Elliotte Rusty Harold Date: Thu, 30 Jul 2026 12:28:33 -0400 Subject: [PATCH] [MNG-12594] Fix LegacySupport.setSession() thread safety in DefaultMaven Restores the previous session after execution instead of unconditionally setting it to null. --- .../src/main/java/org/apache/maven/DefaultMaven.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/impl/maven-core/src/main/java/org/apache/maven/DefaultMaven.java b/impl/maven-core/src/main/java/org/apache/maven/DefaultMaven.java index 23e85a14b01e..db8fa8e4e078 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/DefaultMaven.java +++ b/impl/maven-core/src/main/java/org/apache/maven/DefaultMaven.java @@ -157,8 +157,6 @@ public MavenExecutionResult execute(MavenExecutionRequest request) { result = addExceptionToResult( new DefaultMavenExecutionResult(), new InternalErrorException("Internal error: " + e, e)); } - } finally { - legacySupport.setSession(null); } return result; @@ -221,9 +219,13 @@ private MavenExecutionResult doExecute(MavenExecutionRequest request) { sessionScope.seed(Session.class, session.getSession()); sessionScope.seed(InternalMavenSession.class, InternalMavenSession.from(session.getSession())); + MavenSession previousSession = legacySupport.getSession(); legacySupport.setSession(session); - - return doExecute(request, session, result, chainedWorkspaceReader); + try { + return doExecute(request, session, result, chainedWorkspaceReader); + } finally { + legacySupport.setSession(previousSession); + } } finally { sessionScope.exit(); }