A fix is available
APAR status
Closed as program error.
Error description
An NullPointerException can occur when getting a message from a shared queue on a V800 z/OS qmgr from a JMS client. The NPE is thrown because the WebSphere MQ classes for Java attempt to lookup a JmqiCodepage object (used to interpret bytes of data) with an invalid CCSID value (808464432). . From the WebSphere AppServer JMS trace, you can see the java.lang.NullPointerException being thrown from the method: . com.ibm.mq.jmqi.internal.JmqiDC.readString(...) . It is thrown because the WebSphere MQ classes for Java attempt to lookup a JmqiCodepage object (used to interpret bytes of data) with a CCSID value of 808464432: .. [22/03/16 14:36:37:278 CET] 0000001e DUMMY 3 (DUMMY) [:/76657665] DUMMY: JmqiCodepage.getJmqiCodepage(808464432): null(cached) <null> . This is not a valid CCSID value and, as such, a null JmqiCodepage object is returned. When attempting to use this null object, a Java NPE is thrown. . When a JMS message with GROUP ID is put to the shared queue, MQ then flattens the message data to be put to the CF Structure (Coupling Facility Structure). When the message is flattened, it results in a malformed message. . Additional Symptom(s) Search Keyword(s): MQMSGPROP/K . CWSJY0003W: JMSCC0110: An exception ' Message : java.lang.NullPointerException Class : class java.lang.NullPointerException Stack : com.ibm.mq.jmqi.internal.JmqiDC.readString (JmqiDC.java:843) : com.ibm.mq.jmqi.MQRFH.readBodyFromBuffer (MQRFH.java:516) : com.ibm.msg.client.wmq.common.internal.messages. WMQReceiveMarshal.constructProviderMessageFromRFH2 (WMQReceiveMarshal.java:300) : com.ibm.msg.client.wmq.common.internal.messages. WMQReceiveMarshal.constructProviderMessageFromProperties (WMQReceiveMarshal.java:191) : com.ibm.msg.client.wmq.common.internal.messages. WMQReceiveMarshal.createProviderMessage (WMQReceiveMarshal.java:467) : com.ibm.msg.client.wmq.common.internal.messages. WMQReceiveMarshal.exportProviderMessage (WMQReceiveMarshal.java:627)
Local fix
Also this problem can be temporarily corrected by altering the queue being put to, to be PROPCTL(V6COMPAT), however this does reduce function and have other side effects are described in the knowledge center here : PROPCTL queue options https://ibm.biz/Bd4yMP or http://www.ibm.com/support/knowledgecenter/SSFKSJ_8.0.0/com.ibm. mq.mig.doc/q008230_.htm
Problem summary
**************************************************************** * USERS AFFECTED: All users of WebSphere MQ for z/OS Version 8 * * Release 0 Modification 0. * **************************************************************** * PROBLEM DESCRIPTION: Putting a message to a shared queue, * * containing message properties or RFH * * data and values in MQMD Version 2 * * fields, such as groupId, results in * * errors parsing the message when it is * * later got due to incorrect header * * chaining. * * * * This can result in a * * NullPointerException when a JMS client * * does a get. Also if an affected message * * is moved or put to another queue, abend * * 5C6-00D400B1 may be seen in the queue * * manager. * **************************************************************** * RECOMMENDATION: * **************************************************************** When messages are put to the CF structure, if the level is less than or equal to CFLEVEL(4) or the message will be offloaded to DB2, the message will be flattened. During this processing, properties of the message are flattened into a RFH2 header, and MQMD V2 fields are extracted into a separate MQMDE, this is then stored in the CF structure (and DB2 if specified). However when the flattening occurs, the encoding field of the MQMDE being added is not correctly located. This results in the headers in the flatten message not being correct chained, with the format fields not correctly representing the following data. Additionally, in the cases where the message has a MQXQH when it is on a shared queue, the MQMDE will be returned in addition to a MQMD v2, with fields only being set in the MQMDE. When the a MQGET retrieves the message from the shared queue, the flattened message is reconstructed. However in this case, this may not occur correctly, and the headers will not be correctly chained, with the encoding, CCSID and format fields being correct for the data following. This results in the JMS client code raising a NullPointerException in com.ibm.mq.jmqi.internal.JmqiDC.readString(), when the code looks for the codepage based on the CCSID.
Problem conclusion
The flatten processing in this case has been corrected, to correctly locate the encoding field of the MQMDE, resulting in the correct chaining of the headers in the message when stored on the CF. This results in the valid message being returned during a MQGET. MQMSGPROP/K 000Y CSQMPRPF
Temporary fix
********* * HIPER * *********
Comments
APAR Information
APAR number
PI60489
Reported component name
WMQ Z/OS 8
Reported component ID
5655W9700
Reported release
000
Status
CLOSED PER
PE
NoPE
HIPER
YesHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2016-04-08
Closed date
2016-04-25
Last modified date
2017-12-01
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
UI37277
Modules/Macros
CSQMPRPF
Fix information
Fixed component name
WMQ Z/OS 8
Fixed component ID
5655W9700
Applicable component levels
R000 PSY UI37277
UP16/05/26 P F605
Fix is available
Select the PTF appropriate for your component level. You will be required to sign in. Distribution on physical media is not available in all countries.
[{"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","Edition":"","Line of Business":{"code":"LOB45","label":"Automation"}}]
Document Information
Modified date:
01 December 2017