Skip to content

Commit 5e5bf75

Browse files
authored
Fix logging setup/teardown order (#11901)
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. Closes #11901
1 parent f101f3f commit 5e5bf75

1 file changed

Lines changed: 5 additions & 5 deletions

File tree

impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/LookupInvoker.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -311,18 +311,18 @@ protected BuildEventListener doDetermineBuildEventListener(C context) {
311311

312312
protected final void createTerminal(C context) {
313313
if (context.terminal == null) {
314-
// Create the build log appender; also sets MavenSimpleLogger sink
315-
ProjectBuildLogAppender projectBuildLogAppender =
316-
new ProjectBuildLogAppender(determineBuildEventListener(context));
317-
context.closeables.add(projectBuildLogAppender);
318-
319314
MessageUtils.systemInstall(
320315
builder -> doCreateTerminal(context, builder),
321316
terminal -> doConfigureWithTerminal(context, terminal));
322317

323318
context.terminal = MessageUtils.getTerminal();
324319
context.closeables.add(MessageUtils::systemUninstall);
325320
MessageUtils.registerShutdownHook(); // safety belt
321+
322+
// Create the build log appender; also sets MavenSimpleLogger sink
323+
ProjectBuildLogAppender projectBuildLogAppender =
324+
new ProjectBuildLogAppender(determineBuildEventListener(context));
325+
context.closeables.add(projectBuildLogAppender);
326326
} else {
327327
doConfigureWithTerminal(context, context.terminal);
328328
}

0 commit comments

Comments
 (0)