This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch maven-4.0.x
in repository https://gitbox.apache.org/repos/asf/maven.git


The following commit(s) were added to refs/heads/maven-4.0.x by this push:
     new 19bd49fe44 [backport maven-4.0.x] Fix logging setup/teardown order 
(#12137)
19bd49fe44 is described below

commit 19bd49fe44136dbb1cda7839eb01cb7e744cd54b
Author: Guillaume Nodet <[email protected]>
AuthorDate: Thu May 21 08:38:44 2026 +0200

    [backport maven-4.0.x] Fix logging setup/teardown order (#12137)
    
    Backport of #11901 onto maven-4.0.x.
    
    Reorder ProjectBuildLogAppender registration in LookupInvoker so that
    it is added to the closeables list after the terminal setup. Since
    closeables are closed in reverse order (LIFO), this ensures the log
    sink is deregistered before the terminal is torn down, preventing
    StackOverflowErrors during shutdown.
---
 .../java/org/apache/maven/cling/invoker/LookupInvoker.java     | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git 
a/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/LookupInvoker.java
 
b/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/LookupInvoker.java
index 5ec158321d..d29e09a5fc 100644
--- 
a/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/LookupInvoker.java
+++ 
b/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/LookupInvoker.java
@@ -311,11 +311,6 @@ protected BuildEventListener 
doDetermineBuildEventListener(C context) {
 
     protected final void createTerminal(C context) {
         if (context.terminal == null) {
-            // Create the build log appender; also sets MavenSimpleLogger sink
-            ProjectBuildLogAppender projectBuildLogAppender =
-                    new 
ProjectBuildLogAppender(determineBuildEventListener(context));
-            context.closeables.add(projectBuildLogAppender);
-
             MessageUtils.systemInstall(
                     builder -> doCreateTerminal(context, builder),
                     terminal -> doConfigureWithTerminal(context, terminal));
@@ -323,6 +318,11 @@ protected final void createTerminal(C context) {
             context.terminal = MessageUtils.getTerminal();
             context.closeables.add(MessageUtils::systemUninstall);
             MessageUtils.registerShutdownHook(); // safety belt
+
+            // Create the build log appender; also sets MavenSimpleLogger sink
+            ProjectBuildLogAppender projectBuildLogAppender =
+                    new 
ProjectBuildLogAppender(determineBuildEventListener(context));
+            context.closeables.add(projectBuildLogAppender);
         } else {
             doConfigureWithTerminal(context, context.terminal);
         }

Reply via email to