Closed dipint closed 2 years ago
This does sound like the same problem as in the APAR, even though the associated fix appears to be already in the 9.2 stream. But there's nothing that can be done in this repo. You need to open a support case with IBM to get problems in the allclient jar investigated.
Yes, it is the same problem as in the APAR. It is fixed on allclient jar versions from 9.1.0.2 to 9.1.0.10, but starting from 9.1.1.0, the fix is not there (even it is not there in 9.1.2). I will open a support case with IBM. Thank you.
Problem Statement:
An MQ classes for JMS application deadlocks when two (or more) threads compare JMS Destination objects in different orders.
This is the same issue which is fixed in the APAR IT27638. But it is still happening on com.ibm.mq.allclient versions 9.1.1.0 and higher. Looks like the fix is not ported to the latest versions of com.ibm.mq.allclient.
mq-jms-spring-boot-starter - 2.4.2 (tried 2.5.3 as well)
com.ibm.mq.allclient - com.ibm.mq.allclient-9.2.1.0 (tried 9.2.3.0) as well.
Java - Open JDK 11
Putting the same description as it is in the APAR -
Consider two threads having access to the same two instances of the class com.ibm.mq.jms.MQQueue identified by the variables mqQueue1 and mqQueue2. If the first thread invokes the equals(Object) method on mqQueue1 passing in mqQueue2 as the argument:
while the second thread simultaneously does the opposite:
then a deadlock can occur. A Javacore of the JVM shows two threads having synchronized on a Map belonging to one of the MQQueue objects and blocked while attempting to access the Map belonging to the other MQQueue object. For example: