IBM Support

PI60489: NULLPOINTEREXCEPTION CAN OCCUR WHEN GETTING A MESSAGE FROM A SHARED QUEUE ON A V800 Z/OS QMGR FROM A JMS CLIENT.

A fix is available

Subscribe

You can track all active APARs for this component.

 

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

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