Prevent double-processing of <include>s when using AOT

Fixes gh-41081
This commit is contained in:
Andy Wilkinson 2024-06-12 19:36:43 +01:00
parent 76e2009bd8
commit 9817ff5622

View File

@ -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 {