KB Article #160707
Problem regarding JMS integration pickup configuration
Problem
-- JMS client does not restart when saving a JMS configuration in "Integration Pickup"
Websphere MQSeries 7 used as JMS
Version of Websphere MQSeries 7.0.10 - 7.0.1.8
Symptomes in TE log:
2012-11-16 07:25:02,730 - INFO [Cluster Thread 56] (AsynchronousJmsManager.stop:49) - Stopping Asynchronous JMS Client: class="com".cyclonecommerce.persistence.DataStoreIdentity;objectId=85557;type=com.cyclonecommerce.collaboration.transport.ExchangePoint
2012-11-16 07:25:02,730 - DEBUG [Cluster Thread 56] (JmsMessageListenerImpl.stopMessageListener:78) - Stopping JMS message listener for queue B2B.AI.MHS_WURPOC_OUTBOUND
2012-11-16 07:25:02,771 - DEBUG [Cluster Thread 56] (JmsClientImpl.disconnect:137) - Disconnecting from JMS queue queue:///B2B.AI.MHS_WURPOC_OUTBOUND
Resolution
*- Upgrade Websphere MqSeries 7 to 7.0.1.9.
You should have this in your TE log:
2012-11-23 11:32:52,523 - INFO [Cluster Thread 50] (AsynchronousJmsManager.stop:49) - Stopping Asynchronous JMS Client: class="com".cyclonecommerce.persistence.DataStoreIdentity;objectId=8249;type=com.cyclonecommerce.collaboration.transport.ExchangePoint
2012-11-23 11:32:53,868 - INFO [Cluster Thread 51] (AsynchronousJmsManager.start:30) - Starting Asynchronous JMS Client: file:/pju_nfs/shrrdj/users/shrxib3/Axway/Bindingscom.sun.jndi.fscontext.RefFSContextFactoryqueueBennyMYQCF
2012-11-23 11:32:53,870 - INFO [JMS listener connect] (JmsMessageListenerImpl.primRun:223) - Starting JMS message listener for file:/pju_nfs/shrrdj/users/shrxib3/Axway/Bindingscom.sun.jndi.fscontext.RefFSContextFactoryqueueBennyMYQCF
Explication on Websphere MQSeries side:
The problem is caused by the sequence of locks taken on one thread being different to another thread. In this case, one thread performed a createTemporaryQueue operation, and another performed a connection stop. If both threads start processing at the same time, one thread locks the session then the connection, the other thread locks the connection and then the session. As each thread holds the lock required by the other thread, a deadlock arises.