IBM Support

IT43539: Message rejected by Qpid Proton client not handled by AMQP Service

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

  • If a message sent from the IBM MQ AMQP Service to a QPid client
    is then rejected by that client, then the Service generates the
    FDCs
    shown below and the client is disconnected:
    
    FDC 1:
    --------------------
    | Probe Id          :- XR30052014
                                       |
    
    java.lang.IllegalStateException: AMQXR1014E:
    Method=processUpdatedDelivery(String) cannot be invoked on
    object=Delivery
    (-721807102) - [0, 0, 0, 0, 0, 0, 0, 24](String) while in
    state=Rejected{error=null}(String).
            at
    com.ibm.mq.MQXRService.AMQPServerSessionV10.processUpdatedDelive
    ry(AMQPServerSessionV10.java:1908)
            at
    com.ibm.mq.MQXRService.AMQPServerSessionV10.processProtonUpdates
    (AMQPServerSessionV10.java:1597)
            at
    com.ibm.mq.MQXRService.AMQPServerSessionV10.handleReceive(AMQPSe
    rverSessionV10.java:548)
            at
    com.ibm.mq.MQXRService.AMQPServerWireContext.receive(AMQPServerW
    ireContext.java:176)
            at
    com.ibm.mq.communications.NonBlockingConnection.receive(NonBlock
    ingConnection.java:386)
    
    
    FDC 2:
    --------------------
    | Probe Id          :- XR10072014
                                      |
    
    java.lang.IllegalStateException: AMQXR1014E:
    Method=setupMessageConsumer(String) cannot be invoked on
    object=com.ibm.mq.MQXRService.AMQPQueueMessageListener@4306bb46(
    String) while in state=SUBSCRIBED(String).
    	at
    com.ibm.mq.MQXRService.AMQPQueueMessageListener.setupMessageCons
    umer(AMQPQueueMessageListener.java:259)
    	at
    com.ibm.mq.MQXRService.AMQPServerSessionV10.processProtonUpdates
    (AMQPServerSessionV10.java:1447)
    	at
    com.ibm.mq.MQXRService.AMQPServerSessionV10.handleReceive(AMQPSe
    rverSessionV10.java:548)
    	at
    com.ibm.mq.MQXRService.AMQPServerWireContext.receive(AMQPServerW
    ireContext.java:176)
    	at
    com.ibm.mq.communications.NonBlockingConnection.receive(NonBlock
    ingConnection.java:386)
    

Local fix

  • N/A
    

Problem summary

  • ****************************************************************
    USERS AFFECTED:
    This affects users of the IBM MQ AMQP Service who have clients
    that could reject messages sent to them.
    
    
    Platforms affected:
    MultiPlatform
    
    ****************************************************************
    PROBLEM DESCRIPTION:
    When a client connected and set up a subscribing link to the IBM
    MQ AMQP Service, messages flowed up to that client by the AMQP
    service could be rejected by that client. If the client rejected
    a message, the AMQP service did not handle this situation
    correctly, leading to the client's connection being unexpectedly
    broken. FDCs were generated by the AMQP service like the
    examples shown below:
    
    FDC 1:
    --------------
    | Probe Id          :- XR30052014
    
    |
    
    java.lang.IllegalStateException: AMQXR1014E:
    Method=processUpdatedDelivery(String) cannot be invoked on
    object=Delivery
    (-721807102) - [0, 0, 0, 0, 0, 0, 0, 24](String) while in
    state=Rejected{error=null}(String).
            at
    com.ibm.mq.MQXRService.AMQPServerSessionV10.processUpdatedDelive
    ry(AMQPServerSessionV10.java:1908)
            at
    com.ibm.mq.MQXRService.AMQPServerSessionV10.processProtonUpdates
    (AMQPServerSessionV10.java:1597)
            at
    com.ibm.mq.MQXRService.AMQPServerSessionV10.handleReceive(AMQPSe
    rverSessionV10.java:548)
            at
    com.ibm.mq.MQXRService.AMQPServerWireContext.receive(AMQPServerW
    ireContext.java:176)
            at
    com.ibm.mq.communications.NonBlockingConnection.receive(NonBlock
    ingConnection.java:386)
    
    		
    FDC 2:
    --------------
    | Probe Id          :- XR10072014
    
    |
    
    java.lang.IllegalStateException: AMQXR1014E:
    Method=setupMessageConsumer(String) cannot be invoked on
    object=com.ibm.mq.MQXRService.AMQPQueueMessageListener@4306bb46(
    String) while in state=SUBSCRIBED(String).
    	at
    com.ibm.mq.MQXRService.AMQPQueueMessageListener.setupMessageCons
    umer(AMQPQueueMessageListener.java:259)
    	at
    com.ibm.mq.MQXRService.AMQPServerSessionV10.processProtonUpdates
    (AMQPServerSessionV10.java:1447)
    	at
    com.ibm.mq.MQXRService.AMQPServerSessionV10.handleReceive(AMQPSe
    rverSessionV10.java:548)
    	at
    com.ibm.mq.MQXRService.AMQPServerWireContext.receive(AMQPServerW
    ireContext.java:176)
    	at
    com.ibm.mq.communications.NonBlockingConnection.receive(NonBlock
    ingConnection.java:386)
    

Problem conclusion

  • To resolve this issue, a new JVM property for the MQ AMQP
    service has been introduced that controls its behaviour when an
    AMQP client rejects a message. The new JVM property is:
    
    com.ibm.mq.MQXR.deleteRejectedMessage
    
    This property should be set in the AMQP Service properties file.
    The name and location of this file is shown below:
    
    AIX and Linux:
    <MQ_DATA_DIRECTORY>/qmgrs/<qMgrName>/amqp/amqp_unix.properties
    
    Windows:
    <MQ_DATA_DIRECTORY>/qmgrs/<qMgrName>/amqp/amqp_win.properties
    
    
    If the value of this property is set to true, any message
    rejected by an AMQP client will be discarded by the AMQP
    service. When this happens, the Service will write the following
    message to its log file:
    
    AMQXR2117W: Rejected message from client ''{0}'' has been
    deleted. Reason: {1}
    
    to provide details of the client and the reason why the message
    was rejected.
    
    
    If the value of this property is set to false (which is also the
    default, so this will be the case if the property is not set at
    all), then any message rejected by an AMQP client will be rolled
    back by the AMQP Service to its queue. In this situation, the
    Service will write the message shown below to its log file:
    
    AMQXR2118W: Rejected message from client ''{0}'' has been
    released back on queue. Reason: {1}
    
    to allow you to identify the client that rejected the message,
    and the reason for the rejection.
    
    One thing to note is that if a message is rolled back, then it
    could result in that message then being redelivered to the
    client. Depending on the reason for the initial rejection, this
    could lead to the message being rejected again, which could
    result in a continual redelivery/rejection of this message.
    Because of this, you should consider the appropriate behaviour
    for your environment and set the property accordingly.
    
    ---------------------------------------------------------------
    The fix is targeted for delivery in the following PTFs:
    
    Version    Maintenance Level
    v9.x CD    9.3.3
    
    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

    IT43539

  • Reported component name

    MQ BASE V9.3

  • Reported component ID

    5724H7291

  • Reported release

    932

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2023-04-12

  • Closed date

    2023-04-24

  • Last modified date

    2023-04-24

  • 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

    MQ BASE V9.3

  • Fixed component ID

    5724H7291

Applicable component levels

[{"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSYHRD","label":"IBM MQ"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"932","Line of Business":{"code":"LOB45","label":"Automation"}}]

Document Information

Modified date:
25 April 2023