Commit 16eaae0b authored by Andy Wilkinson's avatar Andy Wilkinson

Defer background pre-init till the environment is prepared

Previously, background pre-init was started in response to the
application starting event. This meant that it would be running while
the logging turbo filter was in place and was rejecting all logging.
As a result, any logging performed during pre-init would be lost.

This commit changes background pre-init so that it is now started
in response to the application environment prepared event. By this
point, the logging turbo filter has been removed as the logging levels
have been configured from the environment.

Closes gh-21897
parent b98c3dcc
/* /*
* Copyright 2012-2019 the original author or authors. * Copyright 2012-2020 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -23,9 +23,9 @@ import java.util.concurrent.atomic.AtomicBoolean; ...@@ -23,9 +23,9 @@ import java.util.concurrent.atomic.AtomicBoolean;
import javax.validation.Configuration; import javax.validation.Configuration;
import javax.validation.Validation; import javax.validation.Validation;
import org.springframework.boot.context.event.ApplicationEnvironmentPreparedEvent;
import org.springframework.boot.context.event.ApplicationFailedEvent; import org.springframework.boot.context.event.ApplicationFailedEvent;
import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.boot.context.event.ApplicationStartingEvent;
import org.springframework.boot.context.event.SpringApplicationEvent; import org.springframework.boot.context.event.SpringApplicationEvent;
import org.springframework.boot.context.logging.LoggingApplicationListener; import org.springframework.boot.context.logging.LoggingApplicationListener;
import org.springframework.context.ApplicationListener; import org.springframework.context.ApplicationListener;
...@@ -66,7 +66,7 @@ public class BackgroundPreinitializer implements ApplicationListener<SpringAppli ...@@ -66,7 +66,7 @@ public class BackgroundPreinitializer implements ApplicationListener<SpringAppli
@Override @Override
public void onApplicationEvent(SpringApplicationEvent event) { public void onApplicationEvent(SpringApplicationEvent event) {
if (!Boolean.getBoolean(IGNORE_BACKGROUNDPREINITIALIZER_PROPERTY_NAME) if (!Boolean.getBoolean(IGNORE_BACKGROUNDPREINITIALIZER_PROPERTY_NAME)
&& event instanceof ApplicationStartingEvent && multipleProcessors() && event instanceof ApplicationEnvironmentPreparedEvent && multipleProcessors()
&& preinitializationStarted.compareAndSet(false, true)) { && preinitializationStarted.compareAndSet(false, true)) {
performPreinitialization(); performPreinitialization();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment