APAR status
Closed as duplicate of another APAR.
Error description
The asynchronous consumer (which monitors the subscription's queue) is not correctly cleaned up when the MDB listener is stopped. . If the MDB listener that is started later reuses the same worker thread as the earlier instance, then messages arriving on the new subscription are incorrectly delivered to the old consumer. . The ServerSession pool for the old consumer was closed, a javax.jms.IllegalStateException was produced when WMQ tried to obtain a server session to process the message. . The following is an example that shows that the ServerSessionPool is attempting to use what has been marked as closed or closing. . [2012/06/04 11:25:40:717] 8C5E00 > ServerSessionPool.close c=UNK key=P8 (13007002) ThreadId:00000016 FunctionName: close SourceId: com.ibm.ejs.jms.listener.ServerSessionPool Category: FINER ExtendedMessage: Entry; com.ibm.ejs.jms.listener. WS390ServerSessionPool@b750b75 . [2012/06/04 11:38:55:947] 8CB470 > ServerSessionPool.getServerSession c=UNK key=P8 (13007002) ThreadId:00000031 FunctionName: getServerSession SourceId: com.ibm.ejs.jms.listener.ServerSessionPool Category: FINER ExtendedMessage: Entry; com.ibm.ejs.jms.listener. WS390ServerSessionPool@b750b75 . We can see that this connection consumer is closed when the MDB ends: . [2012/04/18 11:10:39:469] 8C67D0 > WMQConsumerShadow.close() c=UNK key=P8 (13007002) ThreadId:00000014 FunctionName: close() (com.ibm.msg.client.wmq.internal.WMQConsumerShadow) [:/78957895] SourceId: com.ibm.msg.client.wmq.internal.WMQConsumerShadow Category: FINER ExtendedMessage: Entry; <null> . However, suddenly 18 minutes later MQ delivers a message to this connection consumer: . [2012/04/18 11:28:48:846] 8C2518 ? DUMMY.DUMMY c=UNK key=P8 (13007002) ThreadId:00000038 FunctionName: DUMMY SourceId: DUMMY Category: FINEST ExtendedMessage: (DUMMY) [:/52e452e4] DUMMY: getCallbackFunction(); com.ibm.msg.client.wmq.internal. WMQConnectionBrowser$WMQConnectionBrowserShadow @78957895 . This eventually leads to the connection consumer attempting to get a server session from the closed pool: . [2012/04/18 11:28:49:307] 8C2518 > ServerSessionPool.getServerSession c=UNK key=P8 (13007002) ThreadId:00000038 FunctionName: getServerSession SourceId: com.ibm.ejs.jms.listener.ServerSessionPool Category: FINER ExtendedMessage: Entry . Which throws the IllegalStateException exception.observed which is the root cause of the MDB failing to consume messages once restarted: [2012/04/18 11:28:49:311] 8C2518 ? JmsMessageReferenceHandlerImpl.com.ibm.msg. client.jms.internal.JmsMessageReferenceHandlerImpl c=UNK key=P8 (13007002) ThreadId:00000038 FunctionName: com.ibm.msg.client.jms.internal. JmsMessageReferenceHandlerImpl SourceId: com.ibm.msg.client.jms.internal. JmsMessageReferenceHandlerImpl Category: FINE ExtendedMessage: (com.ibm.msg.client.jms.internal. JmsMessageReferenceHandlerImpl) [:/43d043d] Tracing exception: javax.jms.IllegalStateException:ServerSessionPool closed or closing com.ibm.ejs.jms.listener. ServerSessionPool.getServerSession (ServerSessionPool.java:387) at com.ibm.msg.client.jms.internal. JmsConnectionConsumerImpl$JmsMessage ReferenceHandlerImpl.endDeliverInternal (JmsConnectionConsumerImpl.java:350) at com.ibm.msg.client.jms.internal. JmsConnectionConsumerImpl$JmsMessage ReferenceHandlerImpl.handleMessageReference (JmsConnectionConsumerImpl.java:469) at com.ibm.msg.client.jms.internal. JmsConnectionImpl$JmsProviderMessage RefHandler.handleMessageReference (JmsConnectionImpl.java:1487) at com.ibm.msg.client.wmq.internal. WMQConnectionBrowser$WMQConnectionBrowserShadow. consumer(WMQConnectionBrowser.java:803) at com.ibm.mq.jmqi.local.internal.LocalProxyConsumer. jmqiConsumerMethod(LocalProxyConsumer.java:207)
Local fix
Problem summary
Problem conclusion
Temporary fix
Comments
Problem summary: An MDB Listener, running in WebSphere Application Server on z/OS, is configured to connect to MQ in bindings mode and subscribes to a topic using a non-durable subscription. After being stopped and restarted, the MDB listener subscribes to the topic again, but when a message is published the application server receives an exception and the MDB does not get invoked. javax.jms.IllegalStateException: ServerSessionPool closed or closing. The exception is caused by residual state which was not removed when the previous instance of the MDB listener was stopped. Problem resolution: The MQ classes for JMS have been updated to correctly remove the listener state when an MDB listener is stopped. This allows the MDB to be invoked correctly when the MDB listener is restarted. This fix changes the Java component of MQ, and will be included in a FixPack APAR. The V7.0.1 fix will be included in FixPack 7.0.1.10 (PM72574). The V7.1.0 fix will be included in FixPack 7.1.0.3 (PM72577).
APAR Information
APAR number
PM67364
Reported component name
WMQ Z/OS V7
Reported component ID
5655R3600
Reported release
018
Status
CLOSED DUB
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2012-06-21
Closed date
2012-09-20
Last modified date
2013-05-01
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
PM71124
Fix information
Applicable component levels
[{"Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"SG19M"},"Platform":[{"code":"PF054","label":"z Systems"}],"Version":"7.0.1"}]
Document Information
Modified date:
29 October 2021