From 9817ff5622596de5e9768f98ac8bcf5755101c45 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Wed, 12 Jun 2024 19:36:43 +0100 Subject: [PATCH] Prevent double-processing of s when using AOT Fixes gh-41081 --- .../logging/logback/SpringBootJoranConfigurator.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/logback/SpringBootJoranConfigurator.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/logback/SpringBootJoranConfigurator.java index 6eadc9596d..39d36d299e 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/logback/SpringBootJoranConfigurator.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/logback/SpringBootJoranConfigurator.java @@ -42,6 +42,7 @@ import ch.qos.logback.core.joran.spi.RuleStore; import ch.qos.logback.core.joran.util.PropertySetter; import ch.qos.logback.core.joran.util.beans.BeanDescription; import ch.qos.logback.core.model.ComponentModel; +import ch.qos.logback.core.model.IncludeModel; import ch.qos.logback.core.model.Model; import ch.qos.logback.core.model.ModelUtil; import ch.qos.logback.core.model.processor.DefaultProcessor; @@ -326,6 +327,7 @@ class SpringBootJoranConfigurator extends JoranConfigurator { try (ObjectInputStream input = new ObjectInputStream(modelInput)) { Model model = (Model) input.readObject(); ModelUtil.resetForReuse(model); + markIncludesAsHandled(model); return model; } } @@ -335,6 +337,15 @@ class SpringBootJoranConfigurator extends JoranConfigurator { } } + private void markIncludesAsHandled(Model model) { + if (model instanceof IncludeModel) { + model.markAsHandled(); + } + for (Model submodel : model.getSubModels()) { + markIncludesAsHandled(submodel); + } + } + } private static final class PatternRules {