Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
6.1.1
-
None
Description
Hi Struts 2 team,
We are using the Execute and Wait Interceptor as following:
<action name="longRunLaunch"
class="my.sample.longrun.action.LongRunAction"
method="longRunLaunch">
<interceptor-ref name="myStack"/>
<interceptor-ref name="execAndWait">
<param name="delay">500</param>
<param name="delaySleepInterval">500</param>
</interceptor-ref>
<result name="wait">/my/sample/wait.jsp</result>
<result name="success">/my/sample/success.jsp</result>
</action>
- with Struts 6.0.3, it works fine
- with Struts 6.1.1, it works fine... but JVM shutdown is hanging
We are running: Apache Tomcat (TomEE)/9.0.41 (8.0.6)
I tried to compare thread dumps and only found this extra one with Struts 6.1.1:
"pool-5-thread-1" #129 prio=5 os_prio=0 cpu=0.00ms elapsed=21.47s tid=0x000001b39a917800 nid=0x3cb0 waiting on condition [0x00000068c4fff000]
java.lang.Thread.State: WAITING (parking)
at jdk.internal.misc.Unsafe.park(java.base@11.0.10/Native Method)
- parking to wait for <0x00000000e4ca75b0> (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
Regards,
Jean.