IBM Support

IT25282: A IBM MQ classes for JMS asynchronous MessageConsumer does not drive a MessageListener even though messages are present

Subscribe to this APAR

By subscribing, you receive periodic emails alerting you to the status of the APAR, along with a link to the fix after it becomes available. You can track this item individually or track all items by product.

Notify me when this APAR changes.

Notify me when an APAR for this component changes.

 

APAR status

  • Closed as program error.

Error description

  • A IBM MQ classes for JMS application is running, using an
    asynchronous MessageConsumer, one which was created using
    the method:
    
     javax.jms.MessageConsumer.setMessageListener(
                      javax.jms.MessageListener)
    
    The associated MQ classes for JMS Connection object is running
    in "migration mode".
    
    This could, for example, be because either the application:
    
    (a) Is connecting to an MQ channel where SHARECNV(0) has been
    defined.
    
    or
    
    (b) has configured the associated MQConnectionFactory has been
    configured with the property:
    
            ProviderVersion="6"
    
      through the use of the method call:
    
    
    com.ibm.mq.jms.MQConnectionFactory.setProviderVersion("6")
    
    
    Even though there are messages present and available to be
    consumed on the queue, the asynchronous MessageConsumer is not
    consuming them and driving the MessageListener.
    
    
    Prior to the problem occurring, the application had been
    calling:
    
     javax.jms.MessageConsumer.close();
    
    on a MessageConsumer which had been created from the same JMS
    "javax.jms.Session" object instance as the MessageConsumer which
    subsequently was not returning messages.
    

Local fix

  • Either:
    
    a) use the MQ classes for JMS in the normal or
    normal-with-restrictions mode of operation,
    
    or
    
    b) close and recreate the JMS resources used by the application.
    

Problem summary

  • ****************************************************************
    USERS AFFECTED:
    This issue affects applications using the MQ classes for JMS
    that are operating in migration mode and have configured an
    asynchronous MessageListener on a MessageConsumers created from
    the same JMS Session as other MessageConsumers.
    
    
    Platforms affected:
    MultiPlatform
    
    ****************************************************************
    PROBLEM DESCRIPTION:
    When the MQ classes for JMS are operating in migration mode, and
    the application has configured message listeners to consume
    messages asynchronously, an internal client thread called the
    "SessionAsyncHelper" thread performs polling MQGET calls on MQ
    destinations to consume messages that can be delivered to the
    configured message listeners.
    
    If the application called the method:
    
      javax.jms.MessageConsumer.close()
    
    then a timing window existed whereby the SessionAsyncHelper
    thread would end because the MQ destination it was about to
    issue an MQGET API call on was closed and dereferenced.  After
    the SessionAsyncHelper thread stopped, no more messages would be
    delivered to message listeners, even those associated with
    non-closed message listeners.
    
    This problem was introduced by APAR IT24240:
    
    http://www.ibm.com/support/docview.wss?uid=swg1IT24240
    
    which was first shipped within:
    
     IBM MQ v9.0.0.4
    
    The issue was fixed prior to the shipping of APAR IT24240 in IBM
    MQ 8.0 - so this APAR does not apply to IBM MQ v8.0.
    

Problem conclusion

  • The IBM MQ classes for JMS have been updated to protect against
    the SessionAsyncHelper thread ending when a MessageConsumer is
    being closed.
    
    If the SessionAsyncHelper thread detects a dereferenced MQ
    destination and the MessageConsumer has been closed, it removes
    the destination from its internal list of destinations to poll
    for messages.
    
    ---------------------------------------------------------------
    The fix is targeted for delivery in the following PTFs:
    
    Version    Maintenance Level
    v9.0 LTS   9.0.0.5
    
    The latest available maintenance can be obtained from
    'WebSphere MQ Recommended Fixes'
    http://www-1.ibm.com/support/docview.wss?rs=171&uid=swg27006037
    
    If the maintenance level is not yet available information on
    its planned availability can be found in 'WebSphere MQ
    Planned Maintenance Release Dates'
    http://www-1.ibm.com/support/docview.wss?rs=171&uid=swg27006309
    ---------------------------------------------------------------
    

Temporary fix

Comments

APAR Information

  • APAR number

    IT25282

  • Reported component name

    IBM MQ BASE M/P

  • Reported component ID

    5724H7261

  • Reported release

    900

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2018-06-06

  • Closed date

    2018-06-18

  • Last modified date

    2018-06-18

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Fix information

  • Fixed component name

    IBM MQ BASE M/P

  • Fixed component ID

    5724H7261

Applicable component levels

[{"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Product":{"code":"SSYHRD","label":"IBM MQ"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"9.0","Edition":"","Line of Business":{"code":"LOB45","label":"Automation"}}]

Document Information

Modified date:
18 June 2018