IBM Support

PM67364: WMQ V701 ASYNCHRONOUS CONSUMER QUEUE IS NOT CORRECTLY CLEANED UP WHEN THE MDB LISTENER IS STOPPED.

Subscribe

You can track all active APARs for this component.

 

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","label":"APARs - z\/OS environment"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"7.0.1","Edition":"","Line of Business":{"code":"","label":""}}]

Document Information

Modified date:
01 May 2013