IBM Support

IJ02960: Poison messages are discarded by MQ classes for JMS after failing to send to the backout queue

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 message is present on a queue with a backout count which
    exceeds the queue's backout threshold (BOTHRESH).  A message
    cannot be put to the backout queue (BOQNAME), for example
    because its capacity has been reached (it is full), or it is
    queue inhibited.
    
    An Activation Specification running within the WebSphere
    Application Server environment attempts to browse the message on
    the queue.  The backout-count exceeded message is consumed from
    the queue, and the IBM MQ Resource Adapter generates an FDC
    containing the following information:
    
    
    Source Class     :-
    com.ibm.msg.client.wmq.common.internal.messages.WMQSendMarshal
    Source Method    :- constructMQMD()
    ProbeID          :- XN007004
    Thread           :- name=Jmqi AsyncConsume Thread. priority=5
    group=main ccl=com.ibm.ws.bootstrap.ExtClassLoader@cc1eb679
    .
    |   DeliveryMode  :-  -1
    |   message       :-  Invalid DeliveryMode
    .
    |   	at
    com.ibm.msg.client.commonservices.trace.Trace.ffst(Trace.java:15
    55)
    |   	at
    com.ibm.msg.client.wmq.common.internal.messages.WMQSendMarshal.c
    onstructMQMD(WMQSendMarshal.java:282)
    |   	at
    com.ibm.msg.client.wmq.common.internal.messages.WMQSendMarshal.e
    xportMQMDAndMessageBuffers(WMQSendMarshal.java:500)
    |   	at
    com.ibm.msg.client.wmq.common.internal.messages.WMQSendMarshal.e
    xportMQMD(WMQSendMarshal.java:564)
    |   	at
    com.ibm.msg.client.wmq.internal.WMQPoison$PoisonMessage.calculat
    eMqmdAndBuffers(WMQPoison.java:1982)
    |   	at
    com.ibm.msg.client.wmq.internal.WMQPoison$PoisonMessage.getRepor
    t(WMQPoison.java:2084)
    |   	at
    com.ibm.msg.client.wmq.internal.WMQPoison$PoisonMessage.access$6
    00(WMQPoison.java:1777)
    |   	at
    com.ibm.msg.client.wmq.internal.WMQPoison.handlePoisonMessage(WM
    QPoison.java:428)
    |   	at
    com.ibm.msg.client.wmq.internal.WMQPoison.handlePoisonMessage(WM
    QPoison.java:333)
    |   	at
    com.ibm.msg.client.wmq.internal.WMQPoison.handlePoisonMessage(WM
    QPoison.java:302)
    |   	at
    com.ibm.msg.client.wmq.internal.WMQConnectionBrowser$WMQConnecti
    onBrowserShadow.handlePoisonMessage(WMQConnectionBrowser.java:56
    1)
    |   	at
    com.ibm.msg.client.wmq.internal.WMQConnectionBrowser$WMQConnecti
    onBrowserShadow.poisonous(WMQConnectionBrowser.java:459)
    |   	at
    com.ibm.msg.client.wmq.internal.WMQConnectionBrowser$WMQConnecti
    onBrowserShadow.consumer(WMQConnectionBrowser.java:801)
    |   	at
    com.ibm.mq.jmqi.local.internal.LocalProxyConsumer.jmqiConsumerMe
    thod(LocalProxyConsumer.java:222)
    
    
    The message is not returned to the application, and it has not
    been put to either the backout queue, or the dead letter queue,
    or left on the source queue.  It has been discarded.
    

Local fix

  • N/A
    

Problem summary

  • ****************************************************************
    USERS AFFECTED:
    This issue affects users of the IBM MQ classes for JMS at
    versions:
    
      7.1.0.6 -> 7.1.0.12
      7.5.0.5 -> 7.5.0.8
    
    where the application is consuming a message from a queue or
    topic where the following conditions are met:
    
    (a) Message backout count exceeds the Destination backout
    threshold
    
    (b) Unable to requeue the message to the defined backout queue
    (BOQNAME), for example if the queue is full or put-inhibited
    
    (c) The "com.ibm.mq.jms.MQDestination" object which the message
    was being consumed from has its "PERSISTENCE" property set to
    the value "QDEF".  For example, this would occur if the
    MQDestination object has been obtained from the WebSphere
    Application Server JNDI, where the JNDI entry was defined with
    the "As per queue definition" persistence setting.
    
    
    Platforms affected:
    MultiPlatform
    
    ****************************************************************
    PROBLEM DESCRIPTION:
    The specific scenario where this error occurred was when a
    message was picked up that had reached its backout count, and so
    there was an attempt to send this message to the specified
    backout queue - however this could not be done, as the backout
    queue was either full, or had been configured as put inhibited,
    so there was then a fall-back attempt to send the message to the
    dead-letter queue instead.
    
    When performing some actions on the message headers in
    preparation for sending it to the dead-letter queue, an FDC with
    probe ID XN007004 was thrown, and an error is seen in the
    WebSphere Application Server "SystemOut.log" file, for the form:
    
    CWSJY0003W: JMSWMQ0036: Application Server Facilities caught
    exception '
    Message : javax.jms.JMSException: JMSCS0006: An internal problem
    occurred. Diagnostic information for service was written to
    'null'. Please terminate the application as the product is in an
    inconsistent internal state.
      Class : class javax.jms.JMSException
    
    Stack :
    com.ibm.msg.client.commonservices.trace.Trace.ffst(Trace.java:15
    55)
    :
    com.ibm.msg.client.wmq.common.internal.messages.WMQSendMarshal.c
    onstructMQMD(WMQSendMarshal.java:282)
    :
    com.ibm.msg.client.wmq.common.internal.messages.WMQSendMarshal.e
    xportMQMDAndMessageBuffers(WMQSendMarshal.java:500)
    :
    com.ibm.msg.client.wmq.common.internal.messages.WMQSendMarshal.e
    xportMQMD(WMQSendMarshal.java:564)
    :
    com.ibm.msg.client.wmq.internal.WMQPoison$PoisonMessage.calculat
    eMqmdAndBuffers(WMQPoison.java:1982)
    :
    com.ibm.msg.client.wmq.internal.WMQPoison$PoisonMessage.getRepor
    t(WMQPoison.java:2084)
    <<< snip >>>
    :
    com.ibm.msg.client.wmq.internal.WMQConnectionBrowser$WMQConnecti
    onBrowserShadow.handlePoisonMessage(WMQConnectionBrowser.java:56
    1)
    :
    com.ibm.msg.client.wmq.internal.WMQConnectionBrowser$WMQConnecti
    onBrowserShadow.poisonous(WMQConnectionBrowser.java:459)
    :
    com.ibm.msg.client.wmq.internal.WMQConnectionBrowser$WMQConnecti
    onBrowserShadow.consumer(WMQConnectionBrowser.java:801)
     :
    com.ibm.mq.jmqi.remote.impl.RemoteProxyQueue.driveConsumer(Remot
    eProxyQueue.java:4257)
    <<< snip >>>
    
    
    This issue only occurred if the "com.ibm.mq.jms.MQDestination"
    object's persistence property was set to "QDEF" integer value,
    such as using the "As per WebSphere MQ queue definition" value
    in the WebSphere Application Server JNDI definition for the
    Destination.
    

Problem conclusion

  • The IBM MQ classes for JMS has been updated such that when a
    message is being consumed which has:
    
    (a) A backout count which exceeds the specified queue backout
    threshold
    
    (b) Cannot be delivered to the specified backout queue for some
    reason, such as that queue being full or put inhibited
    
    it is successfully sent to the dead letter queue instead of
    being discarded.
    
    ---------------------------------------------------------------
    The fix is targeted for delivery in the following PTFs:
    
    Version    Maintenance Level
    v7.5       7.5.0.10
    v9.1 CD    9.1.1
    
    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

    IJ02960

  • Reported component name

    WMQ LIN X86 V7

  • Reported component ID

    5724H7224

  • Reported release

    710

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    YesHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2018-01-05

  • Closed date

    2018-10-17

  • Last modified date

    2018-10-17

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

    PI91841

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

Fix information

  • Fixed component name

    WMQ LIN X86 V7

  • Fixed component ID

    5724H7224

Applicable component levels



Document information

More support for: WebSphere MQ
APAR / Maintenance

Software version: 710

Reference #: IJ02960

Modified date: 17 October 2018


Translate this page: