Please find below information about deadlock that occurred during JMS broker restart in application using TransactionsEssentials 6.0.0 and Spring Boot 3.2.5
Found one Java-level deadlock:
"DefaultJmsListenerContainer2":
waiting to lock monitor 0x00007f4108256010 (object 0x00000000e0e001e0, a com.atomikos.jms.internal.AtomikosJmsXaSessionProxy),
which is held by "DefaultJmsListenerContainer3"
"DefaultJmsListenerContainer3":
waiting to lock monitor 0x00007f41b8c37060 (object 0x00000000e4802398, a com.atomikos.jms.internal.AtomikosJmsXaSessionProxy),
which is held by "DefaultJmsListenerContainer2"
Java stack information for the threads listed above:
"DefaultJmsListenerContainer2":
at com.atomikos.jms.internal.AtomikosJmsXaSessionProxy.invoke(AtomikosJmsXaSessionProxy.java:58)
waiting to lock <0x00000000e0e001e0> (a com.atomikos.jms.internal.AtomikosJmsXaSessionProxy)
at jdk.proxy3.$Proxy154.close(jdk.proxy3/Unknown Source)
at com.atomikos.jms.internal.AtomikosJmsConnectionProxy.closeAllPendingSessions(AtomikosJmsConnectionProxy.java:404)
at com.atomikos.jms.internal.AtomikosPooledJmsConnection.onTerminated(AtomikosPooledJmsConnection.java:120)
at com.atomikos.datasource.xa.session.SessionHandleState.fireTerminatedEvent(SessionHandleState.java:258)
at com.atomikos.datasource.xa.session.SessionHandleState.notifySessionClosed(SessionHandleState.java:124)
at com.atomikos.jms.internal.AtomikosJmsXaSessionProxy.close(AtomikosJmsXaSessionProxy.java:115)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(java.base@17.0.11/Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(java.base@17.0.11/NativeMethodAccessorImpl.java:77)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base@17.0.11/DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(java.base@17.0.11/Method.java:568)
at com.atomikos.util.DynamicProxySupport.callProxiedMethod(DynamicProxySupport.java:164)
at com.atomikos.util.DynamicProxySupport.invoke(DynamicProxySupport.java:121)
at com.atomikos.jms.internal.AtomikosJmsXaSessionProxy.invoke(AtomikosJmsXaSessionProxy.java:58)
locked <0x00000000e4802398> (a com.atomikos.jms.internal.AtomikosJmsXaSessionProxy)
at jdk.proxy3.$Proxy154.close(jdk.proxy3/Unknown Source)
at org.springframework.jms.support.JmsUtils.closeSession(JmsUtils.java:109)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.clearResources(DefaultMessageListenerContainer.java:1315)
locked <0x00000000e4802348> (a java.lang.Object)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1155)
at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@17.0.11/ThreadPoolExecutor.java:1136)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@17.0.11/ThreadPoolExecutor.java:635)
at java.lang.Thread.run(java.base@17.0.11/Thread.java:840)
"DefaultJmsListenerContainer3":
at com.atomikos.jms.internal.AtomikosJmsXaSessionProxy.invoke(AtomikosJmsXaSessionProxy.java:58)
waiting to lock <0x00000000e4802398> (a com.atomikos.jms.internal.AtomikosJmsXaSessionProxy)
at jdk.proxy3.$Proxy154.close(jdk.proxy3/Unknown Source)
at com.atomikos.jms.internal.AtomikosJmsConnectionProxy.closeAllPendingSessions(AtomikosJmsConnectionProxy.java:404)
at com.atomikos.jms.internal.AtomikosPooledJmsConnection.onTerminated(AtomikosPooledJmsConnection.java:120)
at com.atomikos.datasource.xa.session.SessionHandleState.fireTerminatedEvent(SessionHandleState.java:258)
at com.atomikos.datasource.xa.session.SessionHandleState.notifySessionClosed(SessionHandleState.java:124)
at com.atomikos.jms.internal.AtomikosJmsXaSessionProxy.close(AtomikosJmsXaSessionProxy.java:115)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(java.base@17.0.11/Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(java.base@17.0.11/NativeMethodAccessorImpl.java:77)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base@17.0.11/DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(java.base@17.0.11/Method.java:568)
at com.atomikos.util.DynamicProxySupport.callProxiedMethod(DynamicProxySupport.java:164)
at com.atomikos.util.DynamicProxySupport.invoke(DynamicProxySupport.java:121)
at com.atomikos.jms.internal.AtomikosJmsXaSessionProxy.invoke(AtomikosJmsXaSessionProxy.java:58)
locked <0x00000000e0e001e0> (a com.atomikos.jms.internal.AtomikosJmsXaSessionProxy)
at jdk.proxy3.$Proxy154.close(jdk.proxy3/Unknown Source)
at org.springframework.jms.support.JmsUtils.closeSession(JmsUtils.java:109)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.clearResources(DefaultMessageListenerContainer.java:1315)
locked <0x00000000e0e3a7c8> (a java.lang.Object)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1155)
at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@17.0.11/ThreadPoolExecutor.java:1136)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@17.0.11/ThreadPoolExecutor.java:635)
at java.lang.Thread.run(java.base@17.0.11/Thread.java:840)
Please find below information about deadlock that occurred during JMS broker restart in application using TransactionsEssentials 6.0.0 and Spring Boot 3.2.5
Found one Java-level deadlock:
"DefaultJmsListenerContainer2": waiting to lock monitor 0x00007f4108256010 (object 0x00000000e0e001e0, a com.atomikos.jms.internal.AtomikosJmsXaSessionProxy), which is held by "DefaultJmsListenerContainer3"
"DefaultJmsListenerContainer3": waiting to lock monitor 0x00007f41b8c37060 (object 0x00000000e4802398, a com.atomikos.jms.internal.AtomikosJmsXaSessionProxy), which is held by "DefaultJmsListenerContainer2"
Java stack information for the threads listed above:
"DefaultJmsListenerContainer2": at com.atomikos.jms.internal.AtomikosJmsXaSessionProxy.invoke(AtomikosJmsXaSessionProxy.java:58)