Changes from 12.2.1 to 12.3-rc-1 causing slow stop in Tomcat on Windows

Good day,

I have gone back and determined on which version the slow stop problem on Windows using Tomcat started happening - 12.3-rc-1. The problem does not occur in the immediately preceding version - 12.2.1.

All versions starting with 12.3-rc-1 exhibit this behavior - slow stop in Tomcat on Windows.

Any ideas what changed from 12.2.1 and 12.3-rc-1 that might be causing this issue? Please let me know what I can do to help us narrow this issue down.

Thanks!

Bill

Tomcat catalina log output from when stopping the service (12.3-rc-1):

24-Feb-2021 15:19:10.387 INFO [Thread-20] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-nio-8080"]
24-Feb-2021 15:19:10.591 INFO [Thread-20] org.apache.catalina.core.StandardService.stopInternal Stopping service [Catalina]
24-Feb-2021 15:19:10.777 WARNING [Thread-20] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [xwiki] appears to have started a thread named [searcherExecutor-10-thread-1] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
java.base@11.0.10/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.10/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.10/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.10/java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:433)
java.base@11.0.10/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.10/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.10/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.10/java.lang.Thread.run(Thread.java:834)
24-Feb-2021 15:19:10.793 SEVERE [Thread-20] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [xwiki] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@45ad82a5]) and a value of type [org.codehaus.plexus.classworlds.realm.ClassRealm] (value [ClassRealm[plexus.core, parent: null]]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
24-Feb-2021 15:19:10.793 SEVERE [Thread-20] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [xwiki] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@70f19d8b]) and a value of type [java.util.Stack] (value [[org.xwiki.context.ExecutionContext@610fd4]]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
24-Feb-2021 15:19:10.793 SEVERE [Thread-20] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [xwiki] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@72f072d]) and a value of type [java.util.Stack] (value [[org.xwiki.container.servlet.ServletRequest@28605124]]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
24-Feb-2021 15:19:10.793 SEVERE [Thread-20] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [xwiki] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@70f19d8b]) and a value of type [java.util.Stack] (value [[org.xwiki.context.ExecutionContext@54819c66]]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
24-Feb-2021 15:19:10.793 SEVERE [Thread-20] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [xwiki] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@5c16268d]) and a value of type [java.util.Stack] (value [[org.xwiki.container.servlet.ServletResponse@237f444d]]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
24-Feb-2021 15:19:10.793 SEVERE [Thread-20] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [xwiki] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@70f19d8b]) and a value of type [java.util.Stack] (value [[org.xwiki.context.ExecutionContext@93cc877]]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
24-Feb-2021 15:19:10.793 SEVERE [Thread-20] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [xwiki] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@72f072d]) and a value of type [java.util.Stack] (value [[org.xwiki.container.servlet.ServletRequest@5106079a]]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
24-Feb-2021 15:19:12.574 SEVERE [Thread-20] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [xwiki] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@3c496179]) and a value of type [java.util.LinkedList] (value [[org.xwiki.logging.event.LoggerListener@654d1791]]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
24-Feb-2021 15:19:12.574 SEVERE [Thread-20] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [xwiki] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@5c16268d]) and a value of type [java.util.Stack] (value [[org.xwiki.container.servlet.ServletResponse@add143f]]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
24-Feb-2021 15:19:12.606 INFO [Thread-20] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-nio-8080"]
24-Feb-2021 15:19:12.637 INFO [Thread-20] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["http-nio-8080"]

Tomcat stderr output when stopping the service:

24-Feb-2021 15:19:10.387 INFO [Thread-20] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-nio-8080"]
24-Feb-2021 15:19:10.591 INFO [Thread-20] org.apache.catalina.core.StandardService.stopInternal Stopping service [Catalina]
Exception in thread "User event dispatcher thread" org.infinispan.IllegalLifecycleStateException: ISPN000323: Cache 'configuration.document.space' is in 'TERMINATED' state and so it does not accept new invocations. Either restart it or recreate the cache container.
at org.infinispan.interceptors.impl.InvocationContextInterceptor.ignoreCommand(InvocationContextInterceptor.java:98)
at org.infinispan.interceptors.impl.InvocationContextInterceptor.visitCommand(InvocationContextInterceptor.java:87)
at org.infinispan.interceptors.impl.AsyncInterceptorChainImpl.invoke(AsyncInterceptorChainImpl.java:248)
at org.infinispan.cache.impl.CacheImpl.get(CacheImpl.java:527)
at org.infinispan.cache.impl.CacheImpl.get(CacheImpl.java:520)
at org.infinispan.cache.impl.AbstractDelegatingCache.get(AbstractDelegatingCache.java:438)
at org.infinispan.cache.impl.EncoderCache.get(EncoderCache.java:660)
at org.xwiki.cache.infinispan.internal.InfinispanCache.get(InfinispanCache.java:101)
at org.xwiki.configuration.internal.AbstractDocumentConfigurationSource.getPropertyValue(AbstractDocumentConfigurationSource.java:319)
at org.xwiki.configuration.internal.AbstractDocumentConfigurationSource.containsKey(AbstractDocumentConfigurationSource.java:199)
at org.xwiki.configuration.internal.AbstractSpacesConfigurationSource$SpaceConfigurationSource.containsKey(AbstractSpacesConfigurationSource.java:171)
at org.xwiki.configuration.internal.AbstractCompositeConfigurationSource.containsKey(AbstractCompositeConfigurationSource.java:45)
at org.xwiki.configuration.internal.AbstractCompositeConfigurationSource.containsKey(AbstractCompositeConfigurationSource.java:45)
at org.xwiki.configuration.internal.AbstractCompositeConfigurationSource.getProperty(AbstractCompositeConfigurationSource.java:95)
at org.xwiki.url.internal.DefaultURLConfiguration.getURLFormatId(DefaultURLConfiguration.java:55)
at org.xwiki.url.internal.URLExecutionContextInitializer.initialize(URLExecutionContextInitializer.java:55)
at org.xwiki.context.internal.DefaultExecutionContextManager.runInitializers(DefaultExecutionContextManager.java:131)
at org.xwiki.context.internal.DefaultExecutionContextManager.pushContext(DefaultExecutionContextManager.java:112)
at org.xwiki.notifications.notifiers.internal.UserEventDispatcher.run(UserEventDispatcher.java:129)
at java.base/java.lang.Thread.run(Thread.java:834)
24-Feb-2021 15:19:10.777 WARNING [Thread-20] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [xwiki] appears to have started a thread named [searcherExecutor-10-thread-1] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
java.base@11.0.10/jdk.internal.misc.Unsafe.park(Native Method)
java.base@11.0.10/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
java.base@11.0.10/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
java.base@11.0.10/java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:433)
java.base@11.0.10/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1054)
java.base@11.0.10/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1114)
java.base@11.0.10/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base@11.0.10/java.lang.Thread.run(Thread.java:834)
24-Feb-2021 15:19:10.793 SEVERE [Thread-20] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [xwiki] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@45ad82a5]) and a value of type [org.codehaus.plexus.classworlds.realm.ClassRealm] (value [ClassRealm[plexus.core, parent: null]]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
24-Feb-2021 15:19:10.793 SEVERE [Thread-20] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [xwiki] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@70f19d8b]) and a value of type [java.util.Stack] (value [[org.xwiki.context.ExecutionContext@610fd4]]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
24-Feb-2021 15:19:10.793 SEVERE [Thread-20] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [xwiki] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@72f072d]) and a value of type [java.util.Stack] (value [[org.xwiki.container.servlet.ServletRequest@28605124]]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
24-Feb-2021 15:19:10.793 SEVERE [Thread-20] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [xwiki] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@70f19d8b]) and a value of type [java.util.Stack] (value [[org.xwiki.context.ExecutionContext@54819c66]]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
24-Feb-2021 15:19:10.793 SEVERE [Thread-20] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [xwiki] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@5c16268d]) and a value of type [java.util.Stack] (value [[org.xwiki.container.servlet.ServletResponse@237f444d]]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
24-Feb-2021 15:19:10.793 SEVERE [Thread-20] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [xwiki] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@70f19d8b]) and a value of type [java.util.Stack] (value [[org.xwiki.context.ExecutionContext@93cc877]]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
24-Feb-2021 15:19:10.793 SEVERE [Thread-20] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [xwiki] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@72f072d]) and a value of type [java.util.Stack] (value [[org.xwiki.container.servlet.ServletRequest@5106079a]]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
24-Feb-2021 15:19:12.574 SEVERE [Thread-20] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [xwiki] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@3c496179]) and a value of type [java.util.LinkedList] (value [[org.xwiki.logging.event.LoggerListener@654d1791]]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
24-Feb-2021 15:19:12.574 SEVERE [Thread-20] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [xwiki] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [java.lang.ThreadLocal@5c16268d]) and a value of type [java.util.Stack] (value [[org.xwiki.container.servlet.ServletResponse@add143f]]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
24-Feb-2021 15:19:12.606 INFO [Thread-20] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-nio-8080"]
24-Feb-2021 15:19:12.637 INFO [Thread-20] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["http-nio-8080"]

Please let me know what other data I can collect to assist in troubleshooting.

Thanks!

Bill

While the slow stop was occurring I ran jstack -l -e <pid of tomcat service process> - here is the output:

2021-02-25 09:27:15
Full thread dump OpenJDK 64-Bit Server VM (11.0.10+9 mixed mode):

Threads class SMR info:
_java_thread_list=0x0000000028307130, length=29, elements={
0x0000000021432800, 0x0000000021461000, 0x000000002146d000, 0x000000002146e800,
0x000000002146f800, 0x0000000021472800, 0x00000000214bd000, 0x00000000214c6000,
0x000000002164d800, 0x0000000021702000, 0x000000002185b800, 0x00000000266a8800,
0x000000002939f000, 0x0000000029742000, 0x0000000029743000, 0x0000000029747000,
0x0000000029741800, 0x000000002974d800, 0x0000000029748000, 0x000000002974e800,
0x000000002974c000, 0x0000000029749800, 0x000000002974a800, 0x000000002974c800,
0x0000000029748800, 0x000000002974b000, 0x000000002d574800, 0x0000000029743800,
0x000000002d577800
}

"Reference Handler" #2 daemon prio=10 os_prio=2 cpu=15.63ms elapsed=556.85s allocated=0B defined_classes=0 tid=0x0000000021432800 nid=0xdec waiting on condition [0x0000000021cee000]
java.lang.Thread.State: RUNNABLE
at java.lang.ref.Reference.waitForReferencePendingList(java.base@11.0.10/Native Method)
at java.lang.ref.Reference.processPendingReferences(java.base@11.0.10/Reference.java:241)
at java.lang.ref.Reference$ReferenceHandler.run(java.base@11.0.10/Reference.java:213)

Locked ownable synchronizers:
- None

"Finalizer" #3 daemon prio=8 os_prio=1 cpu=31.25ms elapsed=556.83s allocated=13872B defined_classes=3 tid=0x0000000021461000 nid=0x1bf8 in Object.wait() [0x0000000021def000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(java.base@11.0.10/Native Method)
- waiting on <no object reference available>
at java.lang.ref.ReferenceQueue.remove(java.base@11.0.10/ReferenceQueue.java:155)
- waiting to re-lock in wait() <0x00000000902026b0> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(java.base@11.0.10/ReferenceQueue.java:176)
at java.lang.ref.Finalizer$FinalizerThread.run(java.base@11.0.10/Finalizer.java:170)

Locked ownable synchronizers:
- None

"Signal Dispatcher" #4 daemon prio=9 os_prio=2 cpu=0.00ms elapsed=556.77s allocated=0B defined_classes=0 tid=0x000000002146d000 nid=0x1754 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

Locked ownable synchronizers:
- None

"Attach Listener" #5 daemon prio=5 os_prio=2 cpu=0.00ms elapsed=556.77s allocated=0B defined_classes=0 tid=0x000000002146e800 nid=0x1bdc waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

Locked ownable synchronizers:
- None

"Service Thread" #6 daemon prio=9 os_prio=0 cpu=0.00ms elapsed=556.77s allocated=0B defined_classes=0 tid=0x000000002146f800 nid=0x14ec runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

Locked ownable synchronizers:
- None

"C2 CompilerThread0" #7 daemon prio=9 os_prio=2 cpu=79750.00ms elapsed=556.77s allocated=1912B defined_classes=0 tid=0x0000000021472800 nid=0x1bcc waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
No compile task

Locked ownable synchronizers:
- None

"C1 CompilerThread0" #9 daemon prio=9 os_prio=2 cpu=14421.88ms elapsed=556.77s allocated=212K defined_classes=0 tid=0x00000000214bd000 nid=0x1d20 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
No compile task

Locked ownable synchronizers:
- None

"Sweeper thread" #10 daemon prio=9 os_prio=2 cpu=250.00ms elapsed=556.77s allocated=0B defined_classes=0 tid=0x00000000214c6000 nid=0x1d10 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

Locked ownable synchronizers:
- None

"Common-Cleaner" #11 daemon prio=8 os_prio=1 cpu=0.00ms elapsed=556.32s allocated=0B defined_classes=0 tid=0x000000002164d800 nid=0x1d08 in Object.wait() [0x00000000225ef000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(java.base@11.0.10/Native Method)
- waiting on <no object reference available>
at java.lang.ref.ReferenceQueue.remove(java.base@11.0.10/ReferenceQueue.java:155)
- waiting to re-lock in wait() <0x0000000090202b00> (a java.lang.ref.ReferenceQueue$Lock)
at jdk.internal.ref.CleanerImpl.run(java.base@11.0.10/CleanerImpl.java:148)
at java.lang.Thread.run(java.base@11.0.10/Thread.java:834)
at jdk.internal.misc.InnocuousThread.run(java.base@11.0.10/InnocuousThread.java:134)

Locked ownable synchronizers:
- None

"AsyncFileHandlerWriter-1712669532" #14 daemon prio=5 os_prio=0 cpu=46.88ms elapsed=554.75s allocated=420K defined_classes=73 tid=0x0000000021702000 nid=0x1bc4 waiting on condition [0x00000000227ee000]
java.lang.Thread.State: TIMED_WAITING (parking)
at jdk.internal.misc.Unsafe.park(java.base@11.0.10/Native Method)
- parking to wait for <0x0000000090204a70> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.parkNanos(java.base@11.0.10/LockSupport.java:234)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(java.base@11.0.10/AbstractQueuedSynchronizer.java:2123)
at java.util.concurrent.LinkedBlockingDeque.pollFirst(java.base@11.0.10/LinkedBlockingDeque.java:513)
at java.util.concurrent.LinkedBlockingDeque.poll(java.base@11.0.10/LinkedBlockingDeque.java:675)
at org.apache.juli.AsyncFileHandler$LoggerThread.run(AsyncFileHandler.java:159)

Locked ownable synchronizers:
- None

"FileHandlerLogFilesCleaner-1" #15 daemon prio=5 os_prio=0 cpu=62.50ms elapsed=554.32s allocated=496K defined_classes=110 tid=0x000000002185b800 nid=0x1bbc waiting on condition [0x00000000228ef000]
java.lang.Thread.State: WAITING (parking)
at jdk.internal.misc.Unsafe.park(java.base@11.0.10/Native Method)
- parking to wait for <0x0000000090202e70> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(java.base@11.0.10/LockSupport.java:194)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(java.base@11.0.10/AbstractQueuedSynchronizer.java:2081)
at java.util.concurrent.LinkedBlockingQueue.take(java.base@11.0.10/LinkedBlockingQueue.java:433)
at java.util.concurrent.ThreadPoolExecutor.getTask(java.base@11.0.10/ThreadPoolExecutor.java:1054)
at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@11.0.10/ThreadPoolExecutor.java:1114)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@11.0.10/ThreadPoolExecutor.java:628)
at java.lang.Thread.run(java.base@11.0.10/Thread.java:834)

Locked ownable synchronizers:
- None

"ForkJoinPool.commonPool-worker-3" #18 daemon prio=5 os_prio=0 cpu=312.50ms elapsed=444.13s allocated=136M defined_classes=10 tid=0x00000000266a8800 nid=0x17e8 waiting on condition [0x000000002b7fe000]
java.lang.Thread.State: WAITING (parking)
at jdk.internal.misc.Unsafe.park(java.base@11.0.10/Native Method)
- parking to wait for <0x0000000092801318> (a java.util.concurrent.ForkJoinPool)
at java.util.concurrent.locks.LockSupport.park(java.base@11.0.10/LockSupport.java:194)
at java.util.concurrent.ForkJoinPool.runWorker(java.base@11.0.10/ForkJoinPool.java:1628)
at java.util.concurrent.ForkJoinWorkerThread.run(java.base@11.0.10/ForkJoinWorkerThread.java:183)

Locked ownable synchronizers:
- None

"searcherExecutor-10-thread-1" #33 prio=5 os_prio=0 cpu=1156.25ms elapsed=360.07s allocated=164M defined_classes=285 tid=0x000000002939f000 nid=0x1664 waiting on condition [0x000000002f63f000]
java.lang.Thread.State: WAITING (parking)
at jdk.internal.misc.Unsafe.park(java.base@11.0.10/Native Method)
- parking to wait for <0x0000000094c00308> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(java.base@11.0.10/LockSupport.java:194)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(java.base@11.0.10/AbstractQueuedSynchronizer.java:2081)
at java.util.concurrent.LinkedBlockingQueue.take(java.base@11.0.10/LinkedBlockingQueue.java:433)
at java.util.concurrent.ThreadPoolExecutor.getTask(java.base@11.0.10/ThreadPoolExecutor.java:1054)
at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@11.0.10/ThreadPoolExecutor.java:1114)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@11.0.10/ThreadPoolExecutor.java:628)
at java.lang.Thread.run(java.base@11.0.10/Thread.java:834)

Locked ownable synchronizers:
- None

"Statistics storing daemon" #52 daemon prio=5 os_prio=0 cpu=15.63ms elapsed=323.60s allocated=100088B defined_classes=0 tid=0x0000000029742000 nid=0xe4c waiting on condition [0x00000000354ee000]
java.lang.Thread.State: WAITING (parking)
at jdk.internal.misc.Unsafe.park(java.base@11.0.10/Native Method)
- parking to wait for <0x0000000094ec0d90> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(java.base@11.0.10/LockSupport.java:194)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(java.base@11.0.10/AbstractQueuedSynchronizer.java:2081)
at java.util.concurrent.ArrayBlockingQueue.take(java.base@11.0.10/ArrayBlockingQueue.java:417)
at com.xpn.xwiki.stats.impl.xwiki.XWikiStatsStoreService.register(XWikiStatsStoreService.java:146)
at com.xpn.xwiki.stats.impl.xwiki.XWikiStatsStoreService.runInternal(XWikiStatsStoreService.java:124)
at com.xpn.xwiki.util.AbstractXWikiRunnable.run(AbstractXWikiRunnable.java:133)
at java.lang.Thread.run(java.base@11.0.10/Thread.java:834)

Locked ownable synchronizers:
- None

"DefaultQuartzScheduler_Worker-1" #54 daemon prio=4 os_prio=-1 cpu=0.00ms elapsed=322.99s allocated=0B defined_classes=0 tid=0x0000000029743000 nid=0x3a8 in Object.wait() [0x0000000035e5e000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(java.base@11.0.10/Native Method)
- waiting on <no object reference available>
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)
- waiting to re-lock in wait() <0x0000000094ec1120> (a java.lang.Object)

Locked ownable synchronizers:
- None

"DefaultQuartzScheduler_Worker-2" #55 daemon prio=4 os_prio=-1 cpu=0.00ms elapsed=322.99s allocated=0B defined_classes=0 tid=0x0000000029747000 nid=0x830 in Object.wait() [0x000000003635f000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(java.base@11.0.10/Native Method)
- waiting on <no object reference available>
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)
- waiting to re-lock in wait() <0x0000000094ec1330> (a java.lang.Object)

Locked ownable synchronizers:
- None

"DefaultQuartzScheduler_Worker-3" #56 daemon prio=4 os_prio=-1 cpu=0.00ms elapsed=322.99s allocated=0B defined_classes=0 tid=0x0000000029741800 nid=0x1990 in Object.wait() [0x00000000366de000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(java.base@11.0.10/Native Method)
- waiting on <no object reference available>
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)
- waiting to re-lock in wait() <0x0000000094ec14d0> (a java.lang.Object)

Locked ownable synchronizers:
- None

"DefaultQuartzScheduler_Worker-4" #57 daemon prio=4 os_prio=-1 cpu=0.00ms elapsed=322.99s allocated=0B defined_classes=0 tid=0x000000002974d800 nid=0x910 in Object.wait() [0x00000000367de000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(java.base@11.0.10/Native Method)
- waiting on <no object reference available>
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)
- waiting to re-lock in wait() <0x0000000094ec1cb0> (a java.lang.Object)

Locked ownable synchronizers:
- None

"DefaultQuartzScheduler_Worker-5" #58 daemon prio=4 os_prio=-1 cpu=0.00ms elapsed=322.99s allocated=0B defined_classes=0 tid=0x0000000029748000 nid=0xf20 in Object.wait() [0x00000000368de000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(java.base@11.0.10/Native Method)
- waiting on <no object reference available>
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)
- waiting to re-lock in wait() <0x0000000094ec2078> (a java.lang.Object)

Locked ownable synchronizers:
- None

"DefaultQuartzScheduler_Worker-6" #59 daemon prio=4 os_prio=-1 cpu=0.00ms elapsed=322.99s allocated=0B defined_classes=0 tid=0x000000002974e800 nid=0x1ce0 in Object.wait() [0x00000000369df000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(java.base@11.0.10/Native Method)
- waiting on <no object reference available>
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)
- waiting to re-lock in wait() <0x0000000094ec2370> (a java.lang.Object)

Locked ownable synchronizers:
- None

"DefaultQuartzScheduler_Worker-7" #60 daemon prio=4 os_prio=-1 cpu=0.00ms elapsed=322.99s allocated=0B defined_classes=0 tid=0x000000002974c000 nid=0x970 in Object.wait() [0x0000000037b7e000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(java.base@11.0.10/Native Method)
- waiting on <no object reference available>
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)
- waiting to re-lock in wait() <0x0000000094ec2668> (a java.lang.Object)

Locked ownable synchronizers:
- None

"DefaultQuartzScheduler_Worker-8" #61 daemon prio=4 os_prio=-1 cpu=0.00ms elapsed=322.99s allocated=0B defined_classes=0 tid=0x0000000029749800 nid=0x136c in Object.wait() [0x0000000037c7f000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(java.base@11.0.10/Native Method)
- waiting on <no object reference available>
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)
- waiting to re-lock in wait() <0x0000000094ec2960> (a java.lang.Object)

Locked ownable synchronizers:
- None

"DefaultQuartzScheduler_Worker-9" #62 daemon prio=4 os_prio=-1 cpu=0.00ms elapsed=322.99s allocated=0B defined_classes=0 tid=0x000000002974a800 nid=0xafc in Object.wait() [0x0000000037d7f000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(java.base@11.0.10/Native Method)
- waiting on <no object reference available>
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)
- waiting to re-lock in wait() <0x0000000094ec2c58> (a java.lang.Object)

Locked ownable synchronizers:
- None

"DefaultQuartzScheduler_Worker-10" #63 daemon prio=4 os_prio=-1 cpu=0.00ms elapsed=322.99s allocated=0B defined_classes=0 tid=0x000000002974c800 nid=0x1ffc in Object.wait() [0x0000000037e7f000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(java.base@11.0.10/Native Method)
- waiting on <no object reference available>
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)
- waiting to re-lock in wait() <0x0000000094ec2f50> (a java.lang.Object)

Locked ownable synchronizers:
- None

"DefaultQuartzScheduler_QuartzSchedulerThread" #64 daemon prio=5 os_prio=0 cpu=0.00ms elapsed=322.96s allocated=3184B defined_classes=0 tid=0x0000000029748800 nid=0x1718 in Object.wait() [0x0000000037f7f000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(java.base@11.0.10/Native Method)
- waiting on <no object reference available>
at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:427)
- waiting to re-lock in wait() <0x0000000094c78af8> (a java.lang.Object)

Locked ownable synchronizers:
- None

"Active Installs Ping Thread" #66 daemon prio=5 os_prio=0 cpu=328.13ms elapsed=322.68s allocated=27266K defined_classes=181 tid=0x000000002974b000 nid=0x1c08 waiting on condition [0x00000000393df000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(java.base@11.0.10/Native Method)
at org.xwiki.activeinstalls.internal.client.ActiveInstallsPingThread.runInternal(ActiveInstallsPingThread.java:80)
at com.xpn.xwiki.util.AbstractXWikiRunnable.run(AbstractXWikiRunnable.java:133)
at java.lang.Thread.run(java.base@11.0.10/Thread.java:834)

Locked ownable synchronizers:
- None

"Live E-Mail notifications thread" #69 daemon prio=4 os_prio=-1 cpu=0.00ms elapsed=320.41s allocated=67904B defined_classes=0 tid=0x000000002d574800 nid=0x182c waiting on condition [0x000000003924e000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(java.base@11.0.10/Native Method)
at org.xwiki.notifications.notifiers.internal.email.live.LiveNotificationEmailListener$NotificationGraceTimeRunnable.run(LiveNotificationEmailListener.java:95)
at org.xwiki.context.concurrent.ExecutionContextRunnable.run(ExecutionContextRunnable.java:71)
at java.lang.Thread.run(java.base@11.0.10/Thread.java:834)

Locked ownable synchronizers:
- None

"Java2D Disposer" #75 daemon prio=10 os_prio=2 cpu=0.00ms elapsed=297.02s allocated=0B defined_classes=0 tid=0x0000000029743800 nid=0x1cc in Object.wait() [0x0000000039c1f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(java.base@11.0.10/Native Method)
- waiting on <no object reference available>
at java.lang.ref.ReferenceQueue.remove(java.base@11.0.10/ReferenceQueue.java:155)
- waiting to re-lock in wait() <0x0000000092510880> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(java.base@11.0.10/ReferenceQueue.java:176)
at sun.java2d.Disposer.run(java.desktop@11.0.10/Disposer.java:144)
at java.lang.Thread.run(java.base@11.0.10/Thread.java:834)

Locked ownable synchronizers:
- None

"DestroyJavaVM" #106 prio=5 os_prio=0 cpu=0.00ms elapsed=58.22s allocated=488B defined_classes=0 tid=0x000000002d577800 nid=0x1644 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

Locked ownable synchronizers:
- None

"VM Thread" os_prio=2 cpu=3468.75ms elapsed=556.94s tid=0x0000000021432000 nid=0x1bfc runnable

"GC Thread#0" os_prio=2 cpu=750.00ms elapsed=557.52s tid=0x0000000002387800 nid=0x1be0 runnable

"GC Thread#1" os_prio=2 cpu=843.75ms elapsed=534.61s tid=0x000000002306d800 nid=0x1760 runnable

"GC Thread#2" os_prio=2 cpu=796.88ms elapsed=534.61s tid=0x000000002306e800 nid=0xd34 runnable

"GC Thread#3" os_prio=2 cpu=781.25ms elapsed=534.61s tid=0x0000000022c6e800 nid=0x1e18 runnable

"G1 Main Marker" os_prio=2 cpu=15.63ms elapsed=557.50s tid=0x00000000023b2000 nid=0x1bd8 runnable

"G1 Conc#0" os_prio=2 cpu=875.00ms elapsed=557.50s tid=0x00000000023b4800 nid=0x1bd4 runnable

"G1 Refine#0" os_prio=2 cpu=78.13ms elapsed=557.46s tid=0x00000000208a2800 nid=0x1bf4 runnable

"G1 Young RemSet Sampling" os_prio=2 cpu=0.00ms elapsed=557.46s tid=0x00000000208a3000 nid=0x1bec runnable
"VM Periodic Task Thread" os_prio=2 cpu=187.50ms elapsed=556.21s tid=0x0000000021653800 nid=0x1bc8 waiting on condition

JNI global refs: 39, weak refs: 44

Bill

Daemon threads can’t block the shutdown so what’s left seems to be:

"searcherExecutor-10-thread-1" #33 prio=5 os_prio=0 cpu=1156.25ms elapsed=360.07s allocated=164M defined_classes=285 tid=0x000000002939f000 nid=0x1664 waiting on condition [0x000000002f63f000]
java.lang.Thread.State: WAITING (parking)
at jdk.internal.misc.Unsafe.park(java.base@11.0.10/Native Method)
- parking to wait for <0x0000000094c00308> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(java.base@11.0.10/LockSupport.java:194)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(java.base@11.0.10/AbstractQueuedSynchronizer.java:2081)
at java.util.concurrent.LinkedBlockingQueue.take(java.base@11.0.10/LinkedBlockingQueue.java:433)
at java.util.concurrent.ThreadPoolExecutor.getTask(java.base@11.0.10/ThreadPoolExecutor.java:1054)
at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@11.0.10/ThreadPoolExecutor.java:1114)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@11.0.10/ThreadPoolExecutor.java:628)
at java.lang.Thread.run(java.base@11.0.10/Thread.java:834)

Locked ownable synchronizers:
- None

After some search on Google it seems to be a Solr thread but not really sure why it’s blocking like this (feels like a bug). Solr was indeed upgraded in 12.3-rc-1 to 8.5.1 (from 8.1.1). Did you reproduce with 13.1 too (Solr was upgraded to 8.8.0 in 13.1) ?

Hi @tmortagne - yes - the problem is there (Tomcat slow stop) in 13.1 also.

Below is thread dump from 13.1 - thread dump taken while process in “stopping…” state (not yet stopped), just as before.

2021-02-25 10:45:50
Full thread dump OpenJDK 64-Bit Server VM (11.0.10+9 mixed mode):

Threads class SMR info:
_java_thread_list=0x000000003160a0f0, length=29, elements={
0x00000000219d6000, 0x00000000219e0000, 0x0000000021a3d800, 0x0000000021a3f000,
0x0000000021a40800, 0x00000000219e9800, 0x00000000219ed800, 0x00000000219f5800,
0x0000000021baa800, 0x0000000021c67800, 0x0000000021e1d800, 0x0000000028e02000,
0x00000000286a9000, 0x0000000028df2800, 0x0000000023a69800, 0x0000000023a70000,
0x0000000023a71000, 0x0000000023a71800, 0x000000002d8ca000, 0x00000000291c0000,
0x00000000291c5000, 0x00000000291c4000, 0x00000000291c1800, 0x00000000291c1000,
0x00000000291bf000, 0x00000000291c2800, 0x00000000291c3000, 0x0000000023888000,
0x000000002388a000
}

"Reference Handler" #2 daemon prio=10 os_prio=2 cpu=0.00ms elapsed=577.63s allocated=0B defined_classes=0 tid=0x00000000219d6000 nid=0x1564 waiting on condition [0x000000002226f000]
java.lang.Thread.State: RUNNABLE
at java.lang.ref.Reference.waitForReferencePendingList(java.base@11.0.10/Native Method)
at java.lang.ref.Reference.processPendingReferences(java.base@11.0.10/Reference.java:241)
at java.lang.ref.Reference$ReferenceHandler.run(java.base@11.0.10/Reference.java:213)

Locked ownable synchronizers:
- None

"Finalizer" #3 daemon prio=8 os_prio=1 cpu=0.00ms elapsed=577.63s allocated=166K defined_classes=4 tid=0x00000000219e0000 nid=0x1744 in Object.wait() [0x000000002236f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(java.base@11.0.10/Native Method)
- waiting on <no object reference available>
at java.lang.ref.ReferenceQueue.remove(java.base@11.0.10/ReferenceQueue.java:155)
- waiting to re-lock in wait() <0x0000000090402b48> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(java.base@11.0.10/ReferenceQueue.java:176)
at java.lang.ref.Finalizer$FinalizerThread.run(java.base@11.0.10/Finalizer.java:170)

Locked ownable synchronizers:
- None

"Signal Dispatcher" #4 daemon prio=9 os_prio=2 cpu=0.00ms elapsed=577.61s allocated=0B defined_classes=0 tid=0x0000000021a3d800 nid=0x1f84 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

Locked ownable synchronizers:
- None

"Attach Listener" #5 daemon prio=5 os_prio=2 cpu=0.00ms elapsed=577.61s allocated=0B defined_classes=0 tid=0x0000000021a3f000 nid=0x1d04 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

Locked ownable synchronizers:
- None

"Service Thread" #6 daemon prio=9 os_prio=0 cpu=0.00ms elapsed=577.61s allocated=0B defined_classes=0 tid=0x0000000021a40800 nid=0x1268 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

Locked ownable synchronizers:
- None

"C2 CompilerThread0" #7 daemon prio=9 os_prio=2 cpu=56468.75ms elapsed=577.61s allocated=368B defined_classes=0 tid=0x00000000219e9800 nid=0xf54 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
No compile task

Locked ownable synchronizers:
- None

"C1 CompilerThread0" #9 daemon prio=9 os_prio=2 cpu=11515.63ms elapsed=577.61s allocated=200K defined_classes=0 tid=0x00000000219ed800 nid=0x61c waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
No compile task

Locked ownable synchronizers:
- None

"Sweeper thread" #10 daemon prio=9 os_prio=2 cpu=125.00ms elapsed=577.61s allocated=0B defined_classes=0 tid=0x00000000219f5800 nid=0x778 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

Locked ownable synchronizers:
- None

"Common-Cleaner" #11 daemon prio=8 os_prio=1 cpu=15.63ms elapsed=577.58s allocated=0B defined_classes=0 tid=0x0000000021baa800 nid=0x17cc in Object.wait() [0x0000000022b6e000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(java.base@11.0.10/Native Method)
- waiting on <no object reference available>
at java.lang.ref.ReferenceQueue.remove(java.base@11.0.10/ReferenceQueue.java:155)
- waiting to re-lock in wait() <0x0000000090402fe0> (a java.lang.ref.ReferenceQueue$Lock)
at jdk.internal.ref.CleanerImpl.run(java.base@11.0.10/CleanerImpl.java:148)
at java.lang.Thread.run(java.base@11.0.10/Thread.java:834)
at jdk.internal.misc.InnocuousThread.run(java.base@11.0.10/InnocuousThread.java:134)

Locked ownable synchronizers:
- None

"AsyncFileHandlerWriter-1712669532" #14 daemon prio=5 os_prio=0 cpu=15.63ms elapsed=577.50s allocated=474K defined_classes=80 tid=0x0000000021c67800 nid=0x12f4 waiting on condition [0x0000000022d6f000]
java.lang.Thread.State: TIMED_WAITING (parking)
at jdk.internal.misc.Unsafe.park(java.base@11.0.10/Native Method)
- parking to wait for <0x0000000090404260> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.parkNanos(java.base@11.0.10/LockSupport.java:234)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(java.base@11.0.10/AbstractQueuedSynchronizer.java:2123)
at java.util.concurrent.LinkedBlockingDeque.pollFirst(java.base@11.0.10/LinkedBlockingDeque.java:513)
at java.util.concurrent.LinkedBlockingDeque.poll(java.base@11.0.10/LinkedBlockingDeque.java:675)
at org.apache.juli.AsyncFileHandler$LoggerThread.run(AsyncFileHandler.java:159)

Locked ownable synchronizers:
- None

"FileHandlerLogFilesCleaner-1" #15 daemon prio=5 os_prio=0 cpu=31.25ms elapsed=577.45s allocated=519K defined_classes=120 tid=0x0000000021e1d800 nid=0x1618 waiting on condition [0x0000000022e6e000]
java.lang.Thread.State: WAITING (parking)
at jdk.internal.misc.Unsafe.park(java.base@11.0.10/Native Method)
- parking to wait for <0x00000000904031d8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(java.base@11.0.10/LockSupport.java:194)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(java.base@11.0.10/AbstractQueuedSynchronizer.java:2081)
at java.util.concurrent.LinkedBlockingQueue.take(java.base@11.0.10/LinkedBlockingQueue.java:433)
at java.util.concurrent.ThreadPoolExecutor.getTask(java.base@11.0.10/ThreadPoolExecutor.java:1054)
at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@11.0.10/ThreadPoolExecutor.java:1114)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@11.0.10/ThreadPoolExecutor.java:628)
at java.lang.Thread.run(java.base@11.0.10/Thread.java:834)

Locked ownable synchronizers:
- None

"RxSchedulerPurge-1" #17 daemon prio=5 os_prio=0 cpu=0.00ms elapsed=532.58s allocated=241K defined_classes=1 tid=0x0000000028e02000 nid=0x1c98 waiting on condition [0x000000002be9f000]
java.lang.Thread.State: TIMED_WAITING (parking)
at jdk.internal.misc.Unsafe.park(java.base@11.0.10/Native Method)
- parking to wait for <0x0000000092e66190> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.parkNanos(java.base@11.0.10/LockSupport.java:234)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(java.base@11.0.10/AbstractQueuedSynchronizer.java:2123)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(java.base@11.0.10/ScheduledThreadPoolExecutor.java:1182)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(java.base@11.0.10/ScheduledThreadPoolExecutor.java:899)
at java.util.concurrent.ThreadPoolExecutor.getTask(java.base@11.0.10/ThreadPoolExecutor.java:1054)
at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@11.0.10/ThreadPoolExecutor.java:1114)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@11.0.10/ThreadPoolExecutor.java:628)
at java.lang.Thread.run(java.base@11.0.10/Thread.java:834)

Locked ownable synchronizers:
- None

"RxCachedWorkerPoolEvictor-1" #18 daemon prio=5 os_prio=0 cpu=0.00ms elapsed=532.56s allocated=320B defined_classes=0 tid=0x00000000286a9000 nid=0x1c1c waiting on condition [0x000000002bf9e000]
java.lang.Thread.State: TIMED_WAITING (parking)
at jdk.internal.misc.Unsafe.park(java.base@11.0.10/Native Method)
- parking to wait for <0x0000000092eac6e8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.parkNanos(java.base@11.0.10/LockSupport.java:234)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(java.base@11.0.10/AbstractQueuedSynchronizer.java:2123)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(java.base@11.0.10/ScheduledThreadPoolExecutor.java:1182)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(java.base@11.0.10/ScheduledThreadPoolExecutor.java:899)
at java.util.concurrent.ThreadPoolExecutor.getTask(java.base@11.0.10/ThreadPoolExecutor.java:1054)
at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@11.0.10/ThreadPoolExecutor.java:1114)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@11.0.10/ThreadPoolExecutor.java:628)
at java.lang.Thread.run(java.base@11.0.10/Thread.java:834)

Locked ownable synchronizers:
- None

"searcherExecutor-15-thread-1" #29 prio=5 os_prio=0 cpu=93.75ms elapsed=511.52s allocated=4733K defined_classes=33 tid=0x0000000028df2800 nid=0x19b4 waiting on condition [0x000000002fc7e000]
java.lang.Thread.State: WAITING (parking)
at jdk.internal.misc.Unsafe.park(java.base@11.0.10/Native Method)
- parking to wait for <0x000000009466a258> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(java.base@11.0.10/LockSupport.java:194)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(java.base@11.0.10/AbstractQueuedSynchronizer.java:2081)
at java.util.concurrent.LinkedBlockingQueue.take(java.base@11.0.10/LinkedBlockingQueue.java:433)
at java.util.concurrent.ThreadPoolExecutor.getTask(java.base@11.0.10/ThreadPoolExecutor.java:1054)
at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@11.0.10/ThreadPoolExecutor.java:1114)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@11.0.10/ThreadPoolExecutor.java:628)
at java.lang.Thread.run(java.base@11.0.10/Thread.java:834)

Locked ownable synchronizers:
- None

"Statistics storing daemon" #260 daemon prio=5 os_prio=0 cpu=0.00ms elapsed=200.04s allocated=65080B defined_classes=0 tid=0x0000000023a69800 nid=0x144 waiting on condition [0x000000003705f000]
java.lang.Thread.State: WAITING (parking)
at jdk.internal.misc.Unsafe.park(java.base@11.0.10/Native Method)
- parking to wait for <0x00000000959fd628> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(java.base@11.0.10/LockSupport.java:194)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(java.base@11.0.10/AbstractQueuedSynchronizer.java:2081)
at java.util.concurrent.ArrayBlockingQueue.take(java.base@11.0.10/ArrayBlockingQueue.java:417)
at com.xpn.xwiki.stats.impl.xwiki.XWikiStatsStoreService.register(XWikiStatsStoreService.java:146)
at com.xpn.xwiki.stats.impl.xwiki.XWikiStatsStoreService.runInternal(XWikiStatsStoreService.java:124)
at com.xpn.xwiki.util.AbstractXWikiRunnable.run(AbstractXWikiRunnable.java:133)
at java.lang.Thread.run(java.base@11.0.10/Thread.java:834)

Locked ownable synchronizers:
- None

"DefaultQuartzScheduler_Worker-1" #262 daemon prio=4 os_prio=-1 cpu=0.00ms elapsed=199.75s allocated=0B defined_classes=0 tid=0x0000000023a70000 nid=0x1f8c in Object.wait() [0x000000003725e000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(java.base@11.0.10/Native Method)
- waiting on <no object reference available>
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)
- waiting to re-lock in wait() <0x00000000959ebe10> (a java.lang.Object)

Locked ownable synchronizers:
- None

"DefaultQuartzScheduler_Worker-2" #263 daemon prio=4 os_prio=-1 cpu=0.00ms elapsed=199.75s allocated=0B defined_classes=0 tid=0x0000000023a71000 nid=0x4bc in Object.wait() [0x000000003735f000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(java.base@11.0.10/Native Method)
- waiting on <no object reference available>
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)
- waiting to re-lock in wait() <0x00000000959ec128> (a java.lang.Object)

Locked ownable synchronizers:
- None

"DefaultQuartzScheduler_Worker-3" #264 daemon prio=4 os_prio=-1 cpu=0.00ms elapsed=199.75s allocated=0B defined_classes=0 tid=0x0000000023a71800 nid=0x458 in Object.wait() [0x000000003745f000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(java.base@11.0.10/Native Method)
- waiting on <no object reference available>
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)
- waiting to re-lock in wait() <0x00000000959ec440> (a java.lang.Object)

Locked ownable synchronizers:
- None

"DefaultQuartzScheduler_Worker-4" #265 daemon prio=4 os_prio=-1 cpu=0.00ms elapsed=199.75s allocated=0B defined_classes=0 tid=0x000000002d8ca000 nid=0x1d60 in Object.wait() [0x000000003755f000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(java.base@11.0.10/Native Method)
- waiting on <no object reference available>
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)
- waiting to re-lock in wait() <0x00000000959ec758> (a java.lang.Object)

Locked ownable synchronizers:
- None

"DefaultQuartzScheduler_Worker-5" #266 daemon prio=4 os_prio=-1 cpu=0.00ms elapsed=199.75s allocated=0B defined_classes=0 tid=0x00000000291c0000 nid=0x1e0c in Object.wait() [0x000000003765f000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(java.base@11.0.10/Native Method)
- waiting on <no object reference available>
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)
- waiting to re-lock in wait() <0x00000000959eca70> (a java.lang.Object)

Locked ownable synchronizers:
- None

"DefaultQuartzScheduler_Worker-6" #267 daemon prio=4 os_prio=-1 cpu=0.00ms elapsed=199.75s allocated=0B defined_classes=0 tid=0x00000000291c5000 nid=0x18c8 in Object.wait() [0x000000003775e000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(java.base@11.0.10/Native Method)
- waiting on <no object reference available>
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)
- waiting to re-lock in wait() <0x00000000959ecd88> (a java.lang.Object)

Locked ownable synchronizers:
- None

"DefaultQuartzScheduler_Worker-7" #268 daemon prio=4 os_prio=-1 cpu=0.00ms elapsed=199.75s allocated=0B defined_classes=0 tid=0x00000000291c4000 nid=0x13b4 in Object.wait() [0x000000003785e000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(java.base@11.0.10/Native Method)
- waiting on <no object reference available>
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)
- waiting to re-lock in wait() <0x00000000959ed0a0> (a java.lang.Object)

Locked ownable synchronizers:
- None

"DefaultQuartzScheduler_Worker-8" #269 daemon prio=4 os_prio=-1 cpu=0.00ms elapsed=199.75s allocated=0B defined_classes=0 tid=0x00000000291c1800 nid=0x1788 in Object.wait() [0x000000003795f000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(java.base@11.0.10/Native Method)
- waiting on <no object reference available>
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)
- waiting to re-lock in wait() <0x00000000959ed3b8> (a java.lang.Object)

Locked ownable synchronizers:
- None

"DefaultQuartzScheduler_Worker-9" #270 daemon prio=4 os_prio=-1 cpu=0.00ms elapsed=199.75s allocated=0B defined_classes=0 tid=0x00000000291c1000 nid=0x8ac in Object.wait() [0x0000000038aaf000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(java.base@11.0.10/Native Method)
- waiting on <no object reference available>
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)
- waiting to re-lock in wait() <0x00000000959ed6d0> (a java.lang.Object)

Locked ownable synchronizers:
- None

"DefaultQuartzScheduler_Worker-10" #271 daemon prio=4 os_prio=-1 cpu=0.00ms elapsed=199.75s allocated=0B defined_classes=0 tid=0x00000000291bf000 nid=0x1c8c in Object.wait() [0x0000000038bae000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(java.base@11.0.10/Native Method)
- waiting on <no object reference available>
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:568)
- waiting to re-lock in wait() <0x00000000959ed9e8> (a java.lang.Object)

Locked ownable synchronizers:
- None

"DefaultQuartzScheduler_QuartzSchedulerThread" #272 daemon prio=5 os_prio=0 cpu=0.00ms elapsed=199.73s allocated=1216B defined_classes=0 tid=0x00000000291c2800 nid=0x1408 in Object.wait() [0x0000000038caf000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(java.base@11.0.10/Native Method)
- waiting on <no object reference available>
at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:427)
- waiting to re-lock in wait() <0x00000000959ee860> (a java.lang.Object)

Locked ownable synchronizers:
- None

"Active Installs Ping Thread" #274 daemon prio=5 os_prio=0 cpu=265.63ms elapsed=199.63s allocated=24611K defined_classes=182 tid=0x00000000291c3000 nid=0x1698 waiting on condition [0x0000000033eef000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(java.base@11.0.10/Native Method)
at org.xwiki.activeinstalls.internal.client.ActiveInstallsPingThread.runInternal(ActiveInstallsPingThread.java:80)
at com.xpn.xwiki.util.AbstractXWikiRunnable.run(AbstractXWikiRunnable.java:133)
at java.lang.Thread.run(java.base@11.0.10/Thread.java:834)

Locked ownable synchronizers:
- None

"Farm distribution initialization" #284 daemon prio=5 os_prio=0 cpu=0.00ms elapsed=199.03s allocated=1590K defined_classes=3 tid=0x0000000023888000 nid=0x1624 waiting on condition [0x00000000392af000]
java.lang.Thread.State: WAITING (parking)
at jdk.internal.misc.Unsafe.park(java.base@11.0.10/Native Method)
- parking to wait for <0x0000000095e10d68> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(java.base@11.0.10/LockSupport.java:194)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(java.base@11.0.10/AbstractQueuedSynchronizer.java:2081)
at org.xwiki.job.AbstractJobStatus.ask(AbstractJobStatus.java:364)
at org.xwiki.job.AbstractJobStatus.ask(AbstractJobStatus.java:331)
at org.xwiki.extension.distribution.internal.job.AbstractDistributionJob.runInternal(AbstractDistributionJob.java:203)
at org.xwiki.job.AbstractJob.runInContext(AbstractJob.java:243)
at org.xwiki.job.AbstractJob.run(AbstractJob.java:220)
at org.xwiki.extension.distribution.internal.DefaultDistributionManager$1.run(DefaultDistributionManager.java:222)
at java.lang.Thread.run(java.base@11.0.10/Thread.java:834)

Locked ownable synchronizers:
- None

"DestroyJavaVM" #310 prio=5 os_prio=0 cpu=0.00ms elapsed=60.80s allocated=488B defined_classes=0 tid=0x000000002388a000 nid=0xa38 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

Locked ownable synchronizers:
- None

"VM Thread" os_prio=2 cpu=7781.25ms elapsed=577.64s tid=0x00000000219af800 nid=0x1c0c runnable

"GC Thread#0" os_prio=2 cpu=750.00ms elapsed=577.69s tid=0x00000000028f9000 nid=0x14e4 runnable

"GC Thread#1" os_prio=2 cpu=812.50ms elapsed=571.61s tid=0x0000000023c18000 nid=0x1440 runnable

"GC Thread#2" os_prio=2 cpu=718.75ms elapsed=571.61s tid=0x0000000023aea000 nid=0xdac runnable

"GC Thread#3" os_prio=2 cpu=812.50ms elapsed=571.61s tid=0x0000000023aea800 nid=0x1018 runnable

"G1 Main Marker" os_prio=2 cpu=0.00ms elapsed=577.69s tid=0x0000000002924800 nid=0x1b44 runnable

"G1 Conc#0" os_prio=2 cpu=187.50ms elapsed=577.69s tid=0x0000000002927000 nid=0x1f80 runnable

"G1 Refine#0" os_prio=2 cpu=62.50ms elapsed=577.64s tid=0x0000000020e1a800 nid=0xd7c runnable

"G1 Refine#1" os_prio=2 cpu=0.00ms elapsed=192.08s tid=0x000000002a697800 nid=0xbd0 runnable

"G1 Young RemSet Sampling" os_prio=2 cpu=15.63ms elapsed=577.64s tid=0x0000000020e1b000 nid=0x18c runnable
"VM Periodic Task Thread" os_prio=2 cpu=46.88ms elapsed=577.56s tid=0x0000000021bb9800 nid=0xfc waiting on condition

JNI global refs: 38, weak refs: 44

Thanks!

Bill

Seems to be the same problem:

"searcherExecutor-15-thread-1" #29 prio=5 os_prio=0 cpu=93.75ms elapsed=511.52s allocated=4733K defined_classes=33 tid=0x0000000028df2800 nid=0x19b4 waiting on condition [0x000000002fc7e000]
java.lang.Thread.State: WAITING (parking)
at jdk.internal.misc.Unsafe.park(java.base@11.0.10/Native Method)
- parking to wait for <0x000000009466a258> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(java.base@11.0.10/LockSupport.java:194)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(java.base@11.0.10/AbstractQueuedSynchronizer.java:2081)
at java.util.concurrent.LinkedBlockingQueue.take(java.base@11.0.10/LinkedBlockingQueue.java:433)
at java.util.concurrent.ThreadPoolExecutor.getTask(java.base@11.0.10/ThreadPoolExecutor.java:1054)
at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@11.0.10/ThreadPoolExecutor.java:1114)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@11.0.10/ThreadPoolExecutor.java:628)
at java.lang.Thread.run(java.base@11.0.10/Thread.java:834)

Locked ownable synchronizers:
- None

So I guess we’ll have to debug Solr.

Would be great if you could create an issue on https://jira.xwiki.org/browse/XWIKI and give all the info you can think of to reproduce the problem.

Created issue as requested:

https://jira.xwiki.org/browse/XWIKI-18387

Thanks @tmortagne for taking a look at it!

1 Like

Upgraded to XWiki 13.8/Tomcat 9.0.54/JRE 11.0.12+7; FYI issue still exists - very slow stop of Tomcat service.

To test if the issue is caused by the solr version, I did the following:

With the remote Solr 8.1.1 instance, XWiki stops nearly instantaneously.

Any ideas on why newer versions of Solr prevent the Tomcat service from stopping quickly on Windows?

Thanks!

Bill

1 Like

Upgraded to XWiki 14.10.16/Tomcat 9.0.80/Java 11.0/20+8 - Issue still exists - very slow stop of Tomcat service.