-
Bug
-
Resolution: Unresolved
-
Neutral
-
None
-
None
Observed behaviour
When shutting down Magnolia there is sometimes messages logged from Tomact about thread local leaks:
26-Apr-2022 10:27:56.816 SEVERE [main] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [magnoliaPublic] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@3370f42]) and a value of type [info.magnolia.context.SystemRepositoryStrategy] (value [SystemRepositoryStrategy...
Expected behaviour
Thread locals are cleaned up before shutdown.
Steps to reproduce
I was able to reproduce this by running AssetsCoreFunctionalTests and then shutting down the instance.
Initial analysis
With the help of the debugging facility introduced with MAGNOLIA-8362 I was able to track down the stack traces of where those SystemRepositoryStrategy instances are being created:
info.magnolia.context.SystemRepositoryStrategy.<init>(SystemRepositoryStrategy.java:64) sun.reflect.GeneratedConstructorAccessor580.newInstance(Unknown Source) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) java.lang.reflect.Constructor.newInstance(Constructor.java:423) info.magnolia.objectfactory.ObjectManufacturer.newInstance(ObjectManufacturer.java:129) info.magnolia.objectfactory.ObjectManufacturer.newInstance(ObjectManufacturer.java:99) info.magnolia.objectfactory.guice.GuiceComponentProvider.newInstanceWithParameterResolvers(GuiceComponentProvider.java:134) info.magnolia.objectfactory.guice.GuiceComponentProvider.newInstanceWithParameterResolvers(GuiceComponentProvider.java:120) info.magnolia.objectfactory.guice.GuiceComponentProvider.newInstance(GuiceComponentProvider.java:115) info.magnolia.objectfactory.Components.newInstance(Components.java:100) info.magnolia.context.JCRSessionPerThreadSystemContext.getRepositoryStrategy(JCRSessionPerThreadSystemContext.java:50) info.magnolia.context.AbstractContext.release(AbstractContext.java:308) info.magnolia.resourceloader.jcr.JcrResourceOrigin$ResourcesObservationListener.onEvent(JcrResourceOrigin.java:362) info.magnolia.cms.util.FilteredEventListener.onEvent(FilteredEventListener.java:86) info.magnolia.observation.DeferringEventListener$ObservationBasedDelayedExecutor$1.run(DeferringEventListener.java:102) info.magnolia.cms.util.DelayedExecutor$RunnableWrapper.run(DelayedExecutor.java:103) EDU.oswego.cs.dl.util.concurrent.ClockDaemon$RunLoop.run(Unknown Source) java.lang.Thread.run(Thread.java:748)
and
info.magnolia.context.SystemRepositoryStrategy.<init>(SystemRepositoryStrategy.java:64) sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) java.lang.reflect.Constructor.newInstance(Constructor.java:423) info.magnolia.objectfactory.ObjectManufacturer.newInstance(ObjectManufacturer.java:129) info.magnolia.objectfactory.ObjectManufacturer.newInstance(ObjectManufacturer.java:99) info.magnolia.objectfactory.guice.GuiceComponentProvider.newInstanceWithParameterResolvers(GuiceComponentProvider.java:134) info.magnolia.objectfactory.guice.GuiceComponentProvider.newInstanceWithParameterResolvers(GuiceComponentProvider.java:120) info.magnolia.objectfactory.guice.GuiceComponentProvider.newInstance(GuiceComponentProvider.java:115) info.magnolia.objectfactory.Components.newInstance(Components.java:100) info.magnolia.context.JCRSessionPerThreadSystemContext.getRepositoryStrategy(JCRSessionPerThreadSystemContext.java:50) info.magnolia.context.AbstractContext.getJCRSession(AbstractContext.java:124) info.magnolia.context.MgnlContext.getJCRSession(MgnlContext.java:642) info.magnolia.cms.security.SilentSessionOp.exec(SilentSessionOp.java:65) info.magnolia.context.MgnlContext.doInSystemContext(MgnlContext.java:378) info.magnolia.context.MgnlContext.doInSystemContext(MgnlContext.java:356) info.magnolia.objectfactory.ObservedComponentFactory.load(ObservedComponentFactory.java:146) info.magnolia.objectfactory.ObservedComponentFactory.reload(ObservedComponentFactory.java:142) info.magnolia.objectfactory.ObservedComponentFactory.onEvent(ObservedComponentFactory.java:138) info.magnolia.observation.DeferringEventListener$ObservationBasedDelayedExecutor$1.run(DeferringEventListener.java:102) info.magnolia.cms.util.DelayedExecutor$RunnableWrapper.run(DelayedExecutor.java:103) EDU.oswego.cs.dl.util.concurrent.ClockDaemon$RunLoop.run(Unknown Source) java.lang.Thread.run(Thread.java:748)
Acceptance criteria
- relates to
-
MGNLEE-645 Cannot stop Magnolia since tomcat upgrade
- Closed