spring-boot: Potential race condition when initializing Logback

Using SpringBoot version 1.3.2.RELEASE

Occasionally my tests fail with the error below. It is sporadic, but it appears that one LoggingSystem might be cleaning up when another is initialized.:

Caused by: java.lang.IllegalStateException: Logback configuration error detected: 
ERROR in ch.qos.logback.core.pattern.parser.Compiler@729ed61b - There is no conversion class registered for composite conversion word [clr]
ERROR in ch.qos.logback.core.pattern.parser.Compiler@729ed61b - Failed to create converter for [%clr] keyword
ERROR in ch.qos.logback.core.pattern.parser.Compiler@729ed61b - There is no conversion class registered for composite conversion word [clr]
ERROR in ch.qos.logback.core.pattern.parser.Compiler@729ed61b - Failed to create converter for [%clr] keyword
ERROR in ch.qos.logback.core.pattern.parser.Compiler@729ed61b - There is no conversion class registered for composite conversion word [clr]
ERROR in ch.qos.logback.core.pattern.parser.Compiler@729ed61b - Failed to create converter for [%clr] keyword
ERROR in ch.qos.logback.core.pattern.parser.Compiler@729ed61b - There is no conversion class registered for composite conversion word [clr]
ERROR in ch.qos.logback.core.pattern.parser.Compiler@729ed61b - Failed to create converter for [%clr] keyword
ERROR in ch.qos.logback.core.pattern.parser.Compiler@729ed61b - There is no conversion class registered for composite conversion word [clr]
ERROR in ch.qos.logback.core.pattern.parser.Compiler@729ed61b - Failed to create converter for [%clr] keyword
ERROR in ch.qos.logback.core.pattern.parser.Compiler@729ed61b - There is no conversion class registered for composite conversion word [clr]
ERROR in ch.qos.logback.core.pattern.parser.Compiler@729ed61b - Failed to create converter for [%clr] keyword
ERROR in ch.qos.logback.core.pattern.parser.Compiler@729ed61b - There is no conversion class registered for composite conversion word [clr]
ERROR in ch.qos.logback.core.pattern.parser.Compiler@729ed61b - Failed to create converter for [%clr] keyword
ERROR in ch.qos.logback.core.pattern.parser.Compiler@729ed61b - There is no conversion class registered for conversion word [wEx]
ERROR in ch.qos.logback.core.pattern.parser.Compiler@729ed61b - [wEx] is not a valid conversion word
ERROR in ch.qos.logback.core.pattern.parser.Compiler@71516065 - There is no conversion class registered for conversion word [wEx]
ERROR in ch.qos.logback.core.pattern.parser.Compiler@71516065 - [wEx] is not a valid conversion word
at org.springframework.boot.logging.logback.LogbackLoggingSystem.loadConfiguration(LogbackLoggingSystem.java:153)
at org.springframework.boot.logging.AbstractLoggingSystem.initializeWithConventions(AbstractLoggingSystem.java:71)
at org.springframework.boot.logging.AbstractLoggingSystem.initialize(AbstractLoggingSystem.java:49)
at org.springframework.boot.logging.logback.LogbackLoggingSystem.initialize(LogbackLoggingSystem.java:106)
at org.springframework.boot.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:262)
at org.springframework.boot.logging.LoggingApplicationListener.initialize(LoggingApplicationListener.java:233)
at org.springframework.boot.logging.LoggingApplicationListener.onApplicationEnvironmentPreparedEvent(LoggingApplicationListener.java:200)
at org.springframework.boot.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:176)
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:163)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:136)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:119)
at org.springframework.boot.context.event.EventPublishingRunListener.publishEvent(EventPublishingRunListener.java:111)
at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:65)
at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:54)
at org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:330)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:134)
at org.springframework.cloud.bootstrap.BootstrapApplicationListener.bootstrapServiceContext(BootstrapApplicationListener.java:129)
at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:78)
at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:58)
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:163)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:136)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:119)
at org.springframework.boot.context.event.EventPublishingRunListener.publishEvent(EventPublishingRunListener.java:111)
at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:65)
at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:54)
at org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:330)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
at org.springframework.boot.test.SpringApplicationContextLoader.loadContext(SpringApplicationContextLoader.java:98)
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:98)
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:116)
... 51 more

I’ve tried to create a sample application that consistently triggers the behavior, but the best I’ve been able to do is initialize the logging system a bunch in separate threads and observer that similar occur (though not identical)

        for(int i =0; i < 100; i++){
            new Thread(() -> {
                LoggingSystem system = LoggingSystem.get(LoggingSystem.class.getClassLoader());
                system.initialize(new LoggingInitializationContext(environment), (String)null, (LogFile)null);
            }).start();
        }

About this issue

  • Original URL
  • State: closed
  • Created 8 years ago
  • Comments: 35 (17 by maintainers)

Commits related to this issue

Most upvoted comments

@bin01 Upgrade logback to 1.1.7 did not help and we have yet not upgraded spring boot. Workaround which we did is working for us. It is bit different from one mentioned above. As we are driving our logging using logback.xml and not by logging configuration in application.properties, therefore we skipped revitalization of LogbackLoggingSystem. Here is what we did, we crated below class and added it to classpath

import org.springframework.boot.logging.LoggingInitializationContext;
import org.springframework.boot.logging.logback.LogbackLoggingSystem;
public class AppLoggingSystem extends LogbackLoggingSystem {

	public AppLoggingSystem(ClassLoader classLoader) {
		super(classLoader);

	}
	@Override
	protected void reinitialize(LoggingInitializationContext initializationContext) {
		//Workaround for spring and logback integration issue https://github.com/spring-projects/spring-boot/issues/5669";
		//Skipping re-initialization of Logback, because we are using logback xml configuration which is already initialized
	}
}

then passed -Dorg.springframework.boot.logging.LoggingSystem=com.ca.tdm.utils.AppLoggingSystem as jvm argument.

and we are done.

you may also try switching to different logging system. like -Dorg.springframework.boot.logging.LoggingSystem=org.springframework.boot.logging.log4j.Log4JLoggingSystem

We are facing this problem quite frequently, We have spring boot (1.3.0) application with hibernate hibernate and we are using external logback.xml. We upgraded logback to 1.1.7 but no success. It looks like Hibernate Validator is initialized in different thread using BackgroundPreinitializer. When spring boot is re-configuring logging system, Hibernate Validator is having handle to old logger instance, which is causing the problem Stack traces:

stacktrace.txt

Defect Logs:

java.lang.IllegalStateException: Logback configuration error detected:
ERROR in c.q.l.c.recovery.ResilientFileOutputStream@885755284 - IO failure while writing to file [C:\testProject\logs\server.log] java.io.IOException: Stream Closed
                at org.springframework.boot.logging.logback.LogbackLoggingSystem.loadConfiguration(LogbackLoggingSystem.java:153) ~[spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE]
                at org.springframework.boot.logging.logback.LogbackLoggingSystem.reinitialize(LogbackLoggingSystem.java:197) ~[spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE]
                at org.springframework.boot.logging.AbstractLoggingSystem.initializeWithConventions(AbstractLoggingSystem.java:64) ~[spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE]
                at org.springframework.boot.logging.AbstractLoggingSystem.initialize(AbstractLoggingSystem.java:49) ~[spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE]
                at org.springframework.boot.logging.logback.LogbackLoggingSystem.initialize(LogbackLoggingSystem.java:106) ~[spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE]
                at org.springframework.boot.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:261) ~[spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE]
                at org.springframework.boot.logging.LoggingApplicationListener.initialize(LoggingApplicationListener.java:232) ~[spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE]
                at org.springframework.boot.logging.LoggingApplicationListener.onApplicationEnvironmentPreparedEvent(LoggingApplicationListener.java:199) ~[spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE]
                at org.springframework.boot.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:176) ~[spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE]
                at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:163) ~[spring-context-4.2.3.RELEASE.jar:4.2.3.RELEASE]
                at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:136) ~[spring-context-4.2.3.RELEASE.jar:4.2.3.RELEASE]
                at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:119) ~[spring-context-4.2.3.RELEASE.jar:4.2.3.RELEASE]
                at org.springframework.boot.context.event.EventPublishingRunListener.publishEvent(EventPublishingRunListener.java:111) ~[spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE]
                at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:65) ~[spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE]
                at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:54) ~[spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE]
                at org.springframework.boot.SpringApplication.doRun(SpringApplication.java:315) ~[spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE]
                at org.springframework.boot.SpringApplication.run(SpringApplication.java:295) ~[spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE]
                at org.springframework.boot.context.web.SpringBootServletInitializer.run(SpringBootServletInitializer.java:149) [spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE]
                at org.springframework.boot.context.web.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:129) [spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE]
                at org.springframework.boot.context.web.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:85) [spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE]
                at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:175) [spring-web-4.2.3.RELEASE.jar:4.2.3.RELEASE]
                at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5170) [catalina.jar:8.0.28]
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) [catalina.jar:8.0.28]
                at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725) [catalina.jar:8.0.28]
                at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701) [catalina.jar:8.0.28]
                at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717) [catalina.jar:8.0.28]
                at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:945) [catalina.jar:8.0.28]
                at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1798) [catalina.jar:8.0.28]
                at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [na:1.8.0_91]
                at java.util.concurrent.FutureTask.run(Unknown Source) [na:1.8.0_91]
                at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.8.0_91]
                at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.8.0_91]
                at java.lang.Thread.run(Unknown Source) [na:1.8.0_91]

**ROOT CAUSE:

Thread Stack: when logging system is initialize as default:**

Thread [main] (Suspended (breakpoint at line 27 in ResilientFileOutputStream))              
                owns: LogbackLock  (id=30)        
                ResilientFileOutputStream.<init>(File, boolean) line: 27
                RollingFileAppender<E>(FileAppender<E>).openFile(String) line: 148    
                RollingFileAppender<E>(FileAppender<E>).start() line: 108        
                RollingFileAppender<E>.start() line: 86 
                AppenderAction<E>.end(InterpretationContext, String) line: 96              
                Interpreter.callEndAction(List<Action>, String) line: 317
                Interpreter.endElement(String, String, String) line: 196 
                Interpreter.endElement(EndEvent) line: 182     
                EventPlayer.play(List<SaxEvent>) line: 62            
                JoranConfigurator(GenericConfigurator).doConfigure(List<SaxEvent>) line: 149               
                JoranConfigurator(GenericConfigurator).doConfigure(InputSource) line: 135     
                JoranConfigurator(GenericConfigurator).doConfigure(InputStream) line: 99      
                JoranConfigurator(GenericConfigurator).doConfigure(URL) line: 49        
                ContextInitializer.configureByResource(URL) line: 77     
                ContextInitializer.autoConfig() line: 152
                StaticLoggerBinder.init() line: 85               
                StaticLoggerBinder.<clinit>() line: 55      
                LoggerFactory.bind() line: 140   
                LoggerFactory.performInitialization() line: 119   
                LoggerFactory.getILoggerFactory() line: 328       
                LoggerFactory.getLogger(String) line: 280            
                SLF4JLogFactory.getInstance(String) line: 155    
                SLF4JLogFactory.getInstance(Class) line: 132      
                LogFactory.getLog(Class) line: 273           
                SpringApplication.<init>(Object...) line: 181        
                SpringApplication.run(Object[], String[]) line: 1112          
                SpringApplication.run(Object, String...) line: 1101            
 `
**Thread Stack: when logging system is reconfigured by spring  and it’s trying to shut down existing system: (Notice output stream is being closed here)**
` 
Thread [main] (Suspended (breakpoint at line 111 in ResilientOutputStreamBase))         
                ResilientFileOutputStream(ResilientOutputStreamBase).close() line: 111             
                RollingFileAppender<E>(OutputStreamAppender<E>).closeOutputStream() line: 131   
                RollingFileAppender<E>(OutputStreamAppender<E>).stop() line: 116  
                RollingFileAppender<E>.stop() line: 106               
                AppenderAttachableImpl<E>.detachAndStopAllAppenders() line: 104  
                Logger.detachAndStopAllAppenders() line: 209
                Logger.recursiveReset() line: 338             
                LoggerContext.reset() line: 213
                LogbackLoggingSystem.reinitialize(LoggingInitializationContext) line: 195             
                LogbackLoggingSystem(AbstractLoggingSystem).initializeWithConventions(LoggingInitializationContext, LogFile) line: 64
                LogbackLoggingSystem(AbstractLoggingSystem).initialize(LoggingInitializationContext, String, LogFile) line: 49               
                LogbackLoggingSystem.initialize(LoggingInitializationContext, String, LogFile) line: 106   
                LoggingApplicationListener.initializeSystem(ConfigurableEnvironment, LoggingSystem) line: 261              
                LoggingApplicationListener.initialize(ConfigurableEnvironment, ClassLoader) line: 232   
                LoggingApplicationListener.onApplicationEnvironmentPreparedEvent(ApplicationEnvironmentPreparedEvent) line: 199              
                LoggingApplicationListener.onApplicationEvent(ApplicationEvent) line: 176        
                SimpleApplicationEventMulticaster.invokeListener(ApplicationListener, ApplicationEvent) line: 163        
                SimpleApplicationEventMulticaster.multicastEvent(ApplicationEvent, ResolvableType) line: 136               
                SimpleApplicationEventMulticaster.multicastEvent(ApplicationEvent) line: 119 
                EventPublishingRunListener.publishEvent(SpringApplicationEvent) line: 111       
                EventPublishingRunListener.environmentPrepared(ConfigurableEnvironment) line: 65
                SpringApplicationRunListeners.environmentPrepared(ConfigurableEnvironment) line: 54           
                SpringApplication.doRun(SpringApplicationRunListeners, String...) line: 315        
                SpringApplication.run(String...) line: 295               
                SpringApplication.run(Object[], String[]) line: 1112          
                SpringApplication.run(Object, String...) line: 1101            
                TestApplication.main(String[]) line: 80               
 `
**Thread Stack: when logging system is reconfigured spring: (Notice new stream being created)**
`com.test.TestApplication at localhost:60330          
                Thread [main] (Suspended (breakpoint at line 27 in ResilientFileOutputStream))              
                                owns: LogbackLock  (id=30)        
                                ResilientFileOutputStream.<init>(File, boolean) line: 27
                                RollingFileAppender<E>(FileAppender<E>).openFile(String) line: 148    
                                RollingFileAppender<E>(FileAppender<E>).start() line: 108        
                                RollingFileAppender<E>.start() line: 86 
                                AppenderAction<E>.end(InterpretationContext, String) line: 96              
                                Interpreter.callEndAction(List<Action>, String) line: 317
                                Interpreter.endElement(String, String, String) line: 196 
                                Interpreter.endElement(EndEvent) line: 182     
                                EventPlayer.play(List<SaxEvent>) line: 62            
                                SpringBootJoranConfigurator(GenericConfigurator).doConfigure(List<SaxEvent>) line: 149         
                                SpringBootJoranConfigurator(GenericConfigurator).doConfigure(InputSource) line: 135              
                                SpringBootJoranConfigurator(GenericConfigurator).doConfigure(InputStream) line: 99
                                SpringBootJoranConfigurator(GenericConfigurator).doConfigure(URL) line: 49  
                                LogbackLoggingSystem.configureByResourceUrl(LoggingInitializationContext, LoggerContext, URL) line: 165              
                                LogbackLoggingSystem.loadConfiguration(LoggingInitializationContext, String, LogFile) line: 137
                                LogbackLoggingSystem.reinitialize(LoggingInitializationContext) line: 197             
                                LogbackLoggingSystem(AbstractLoggingSystem).initializeWithConventions(LoggingInitializationContext, LogFile) line: 64
                                LogbackLoggingSystem(AbstractLoggingSystem).initialize(LoggingInitializationContext, String, LogFile) line: 49
                                LogbackLoggingSystem.initialize(LoggingInitializationContext, String, LogFile) line: 106   
                                LoggingApplicationListener.initializeSystem(ConfigurableEnvironment, LoggingSystem) line: 261               
                                LoggingApplicationListener.initialize(ConfigurableEnvironment, ClassLoader) line: 232   
                                LoggingApplicationListener.onApplicationEnvironmentPreparedEvent(ApplicationEnvironmentPreparedEvent) line: 199              
                                LoggingApplicationListener.onApplicationEvent(ApplicationEvent) line: 176        
                                SimpleApplicationEventMulticaster.invokeListener(ApplicationListener, ApplicationEvent) line: 163               
                                SimpleApplicationEventMulticaster.multicastEvent(ApplicationEvent, ResolvableType) line: 136               
                                SimpleApplicationEventMulticaster.multicastEvent(ApplicationEvent) line: 119 
                                EventPublishingRunListener.publishEvent(SpringApplicationEvent) line: 111       
                                EventPublishingRunListener.environmentPrepared(ConfigurableEnvironment) line: 65
                                SpringApplicationRunListeners.environmentPrepared(ConfigurableEnvironment) line: 54           
                                SpringApplication.doRun(SpringApplicationRunListeners, String...) line: 315        
                                SpringApplication.run(String...) line: 295               
                                SpringApplication.run(Object[], String[]) line: 1112          
                                SpringApplication.run(Object, String...) line: 1101            
                                TestApplication.main(String[]) line: 80               
 `
**And here come the Show Stopper (This Thread is fire flush on output stream which is already closed)**
   `             Thread [pool-1-thread-1] (Suspended (breakpoint at line 101 in ResilientOutputStreamBase))  
                                ResilientFileOutputStream(ResilientOutputStreamBase).postIOFailure(IOException) line: 101   
                                ResilientFileOutputStream(ResilientOutputStreamBase).flush() line: 82             
                                PatternLayoutEncoder(LayoutWrappingEncoder<E>).doEncode(E) line: 137       
                                RollingFileAppender<E>(OutputStreamAppender<E>).writeOut(E) line: 194      
                                RollingFileAppender<E>(FileAppender<E>).writeOut(E) line: 220             
                                RollingFileAppender<E>(OutputStreamAppender<E>).subAppend(E) line: 219 
                                RollingFileAppender<E>.subAppend(E) line: 182              
                                RollingFileAppender<E>(OutputStreamAppender<E>).append(E) line: 103         
                                RollingFileAppender<E>(UnsynchronizedAppenderBase<E>).doAppend(E) line: 88        
                                AppenderAttachableImpl<E>.appendLoopOnAppenders(E) line: 48       
                                Logger.appendLoopOnAppenders(ILoggingEvent) line: 273        
                                Logger.callAppenders(ILoggingEvent) line: 260  
                                Logger.buildLoggingEventAndAppend(String, Marker, Level, String, Object[], Throwable) line: 442               
                                Logger.filterAndLog_0_Or3Plus(String, Marker, Level, String, Object[], Throwable) line: 396       
                                Logger.log(Marker, String, int, String, Object[], Throwable) line: 788       
                                NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]               
                                NativeMethodAccessorImpl.invoke(Object, Object[]) line: 62   
                                DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43           
                                Method.invoke(Object, Object...) line: 498         
                                Slf4jLocationAwareLogger.doLog(LocationAwareLogger, String, int, String, Throwable) line: 89  
                                Slf4jLocationAwareLogger.doLogf(Logger$Level, String, String, Object[], Throwable) line: 82      
                                Slf4jLocationAwareLogger(Logger).logf(String, Logger$Level, Throwable, String, Object) line: 2398               
                                Log_$logger.version(String) line: 211     
                                Version.<clinit>() line: 17             
                                ConfigurationImpl.<clinit>() line: 69        
                                HibernateValidator.createGenericConfiguration(BootstrapState) line: 31             
                                Validation$GenericBootstrapImpl.configure() line: 276  
                                BackgroundPreinitializer$ValidationInitializer.run() line: 107        
                                BackgroundPreinitializer$FailSafeRunnable.run() line: 67              
                                Executors$RunnableAdapter<T>.call() line: 511
                                FutureTask<V>.run() line: 266   
                                ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker) line: 1142            
                                ThreadPoolExecutor$Worker.run() line: 617       
                                Thread.run() line: 745   

I suspect this is a duplicate of #5568. @checketts can you please try a 1.3.4 snapshot or override Logback’s version to 1.1.7