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