APAR status
Closed as program error.
Error description
A Java application connects to a z/OS queue manager the BINDINGS transport, and calls MQQueue.get(MQMessage) requesting a message with a specific message identifier. Instead of the message that it requested, the application is actually given the first message on the queue.
Local fix
n/a
Problem summary
**************************************************************** USERS AFFECTED: This issue affects two categories of users: Category 1: ------------------- Users of the IBM MQ V8 classes for Java who have applications which connect to an MQ for z/OS V800 queue manager using the BINDINGS transport and call either of the methods shown below: - MQQueue.get(MQMessage) - MQQueue.get(MQMessage, MQGetMessageOptions) to get a message with a specific message identifier, which is larger than 4kb, from a queue. Category 2: ------------------- Users of the IBM MQ V8 classes for JMS who have applications which connect to an MQ for z/OS V800 queue manager using the BINDINGS transport, set a message selector for the property JMSMessageID to receive a specific message (which is larger than 4kb) from a destination, and then call one of the following methods: - MessageConsumer.receive() - MessageConsumer.receive(long timeout) - MessageConsumer.receiveNoWait() Platforms affected: z/OS **************************************************************** PROBLEM DESCRIPTION: When a MQ classes for Java or classes for JMS application tried to get a message from a destination, where the message was larger than 4kb, the following sequence of events occurred: - The Java Message Queueing Interface (JMQI), used internally by the classes for Java and classes for JMS to communicate with a queue manager, issued an MQGET call using a 4kb buffer (the default buffer size used whenever either the classes for Java and classes for JMS try to get a message) , and the GetMessageOptions MQGMO_MATCH_MSG_ID and MQGMO_MATCH_CORREL_ID set. - As the message was larger than 4kb, the queue manager returned MQRC 2079 (MQRC_TRUNCATED_MSG_FAILED) back to the JMQI in response to the MQGET. The GetMessageOptions structure that the queue manager passed back to the JMQI contained a message token for that message, and the OriginalLength field in the MQMD that was passed back was set to the size of the message. - The JMQI then resized the internal buffer from 4kb to the size specified in the MQMD's OriginalLengh field, and then issued a second MQGET call. This MQGET call was made with the the new larger buffer and a GetMessageOptions structure that had the MQGMO_MATCH_MSG_TOKEN option set. However, the GetMessageOptions structure did not include the message token that was passed back from the queue manager. - The queue manager received the MQGET call that contained a GetMessageOptions structure which had the MQGMO_MATCH_MSG_TOKEN option set and no message token, and returned the first message on the queue. - The JMQI received the message returned by the queue manager and passed it back to the application.
Problem conclusion
The JMQI (used by the MQ classes for Java and classes for JMS) has been updated to ensure that when the BINDINGS transport is being used and an MQGET operation completes, the output fields in the GetMessageOptions structure: - GroupStatus - MsgToken - ResolvedQName - ReturnedLength - Segmentation - SegmentStatus passed back by the queue manager are reused for any subsequent MQGET calls that need to be issued by the JMQI in order to get the message requested by the application. --------------------------------------------------------------- The fix is targeted for delivery in the following PTFs: Version Maintenance Level v8.0 8.0.0.4 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
IT11534
Reported component name
WMQ BASE MULTIP
Reported component ID
5724H7251
Reported release
800
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt
Submitted date
2015-10-05
Closed date
2015-10-09
Last modified date
2015-10-09
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
WMQ BASE MULTIP
Fixed component ID
5724H7251
Applicable component levels
R800 PSY
UP
[{"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Product":{"code":"SSYHRD","label":"IBM MQ"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"8.0.0.0","Edition":"","Line of Business":{"code":"LOB45","label":"Automation"}}]
Document Information
Modified date:
09 October 2015