Deadlock with completion listener (JMS 2.0)
Ce problème est mis en évidence par le test jms2.test7. L'interblocage est décrit par la stacktrace des 2 threads ci-dessous :
"main" #1 prio=5 os_prio=0 tid=0x00000000028f5000 nid=0x61d4 in Object.wait() [0x000000000282f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x000000076ca399e0> (a org.objectweb.joram.client.jms.connection.Requestor)
at org.objectweb.joram.client.jms.connection.Requestor.request(Requestor.java:199) - locked <0x000000076ca399e0> (a org.objectweb.joram.client.jms.connection.Requestor)
at org.objectweb.joram.client.jms.connection.Requestor.request(Requestor.java:126) - locked <0x000000076ca399e0> (a org.objectweb.joram.client.jms.connection.Requestor)
at org.objectweb.joram.client.jms.Session.commit(Session.java:1612) - locked <0x000000076ca397b0> (a org.objectweb.joram.client.jms.Session)
at org.objectweb.joram.client.jms.JMSContext.commit(JMSContext.java:371)
at joram.jms2.Test7.run(Test7.java:74)
at joram.jms2.Test7.main(Test7.java:45)
"(org.objectweb.joram.client.jms.Connection@957a0000,proxyId=#0.0.1026,key=0)" #19 prio=5 os_prio=0 tid=0x000000001fb34800 nid=0x22e0 waiting for monitor entry [0x000000002114e000]
java.lang.Thread.State: BLOCKED (on object monitor)
at org.objectweb.joram.client.jms.Session.commit(Session.java:1560)
- waiting to lock <0x000000076ca397b0> (a org.objectweb.joram.client.jms.Session)
at org.objectweb.joram.client.jms.JMSContext.commit(JMSContext.java:371)
at joram.jms2.Test7.onCompletion(Test7.java:105)
at org.objectweb.joram.client.jms.connection.CompletionListener.onCompletion(CompletionListener.java:64)
at org.objectweb.joram.client.jms.connection.RequestMultiplexer$DemultiplexerDaemon.run(RequestMultiplexer.java:605)
at java.lang.Thread.run(Thread.java:745)
[JORAM-352] created at 2019-10-08 17:10:12 by freyssinet, version JORAM_5_13_0