IBM Support

IT34822: A non-persistent message may be discarded if a waiting async MQGET times out while an MQPUT is delivering to it

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 non-persistent message is not present on a queue after the
    MQPUT (outside of syncpoint) completes, but it was not received
    by any MQGET caller.
    
    Analysis of the diagnostics from the queue manager shows that
    the message was in the process of being delivered to a waiting
    MQGET call from an asynchronous consumer (also outside of
    syncpoint), however the MQGET timed out before the message was
    delivered successfully, but the message was not added to the
    queue.
    

Local fix

  • Use synchronous MQGET API calls, or consume messages from the
    queue under an MQ syncpoint.
    

Problem summary

  • ****************************************************************
    USERS AFFECTED:
    User applications performing Async Consume operations where the
    messages are non persistent
    
    
    Platforms affected:
    MultiPlatform
    
    ****************************************************************
    PROBLEM DESCRIPTION:
    When an application is putting a message, the queue manager may
    determine that there is a getting application (in this instance
    an asynchronous consumer) waiting to receive messages which it
    can give the message to directly. There is a timing window
    whereby the consumer has completed its wait interval just as the
    queue manager is getting ready to hand the message over to it
    (avoiding the the queue)
    
    Synchronous MQGET processing accounts for this scenario when it
    completes its wait interval and perform additional processing to
    receive the message from queue manager by waiting until the put
    processing has completed if necessary. However, a logic error
    meant that asynchronous consumer processing failed to correctly
    check for this scenario and returned MQRC_NO_MSG_AVAILABLE
    (2033) to the consumer application.
    
    At this point, because the message was not going to be placed on
    a queue by MQPUT processing (and because the message was non
    persistent) the message is then lost.
    

Problem conclusion

  • The problem is resolved with the inclusion of code present for
    normal MQGET processing for the specific timing related
    scenario.
    
    ---------------------------------------------------------------
    The fix is targeted for delivery in the following PTFs:
    
    Version    Maintenance Level
    v8.0       8.0.0.16
    v9.0 LTS   9.0.0.12
    v9.1 LTS   9.1.0.8
    v9.2 LTS   9.2.0.2
    v9.x CD    9.2.2
    
    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

    IT34822

  • Reported component name

    IBM MQ BASE MP

  • Reported component ID

    5724H7271

  • Reported release

    910

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    YesHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2020-11-08

  • Closed date

    2021-01-22

  • Last modified date

    2021-06-11

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

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

    IT37229

Fix information

  • Fixed component name

    IBM MQ BASE MP

  • Fixed component ID

    5724H7271

Applicable component levels

[{"Line of Business":{"code":"LOB45","label":"Automation"},"Business Unit":{"code":"BU029","label":"Software"},"Product":{"code":"SSYHRD","label":"IBM MQ"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"910"}]

Document Information

Modified date:
13 June 2021