IBM Support

IT22694: MQ Java client memory leak when using HTTP URLs for Client Channel Definition Tables (CCDTs)

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • An IBM MQ classes for JMS or classes for Java application,
    configured to use a client channel definition table (CCDT)
    referenced using a non-file protocol URL such as http or ftp,
    creates and disconnects connections repeatedly.  After enough
    repetitions a java.lang.OutOfMemory error occurs reporting an
    exhaustion of Java heap memory.
    
    When using a file URL, the same application that creates and
    closes connections repeatedly does not result in a
    java.lang.OutOfMemory error being thrown by the JVM.
    

Local fix

  • Use a client channel definition table (CCDT) on a file system
    local to where the application is running such that the file
    protocol can be used in the URL referencing the CCDT.
    

Problem summary

  • ****************************************************************
    USERS AFFECTED:
    This issue affects users of the:
    
      - IBM MQ classes for JMS
      - IBM MQ classes for Java
      - IBM MQ JCA Resource Adapter
    
      - WebSphere Application Server MQ messaging provider
    
    with applications that create and close multiple connections
    during its lifetime using a client channel definition table
    (CCDT) that is stored on a different system from the one on
    which the application is running.
    
    
    Platforms affected:
    MultiPlatform
    
    ****************************************************************
    PROBLEM DESCRIPTION:
    When an application requested a new connection using a client
    channel definition table (CCDT) that was stored on a different
    system from the one on which the application was running, the
    CCDT would be read and parsed for each connection request.  This
    was because the parsed contents of the CCDT were only cached if
    the CCDT file is local to the application and referenced using
    the "file" protocol in a URL, for example:
    
      java.net.URL chanTab1 = new
    URL("file:///home/admdata/ccdt1.tab");
      factory.setCCDTURL(chanTab1);
    
    where "factory" is an MQConnectionFactory object.
    
    Each time the CCDT was read, a new internal CCDT object was
    created to represent the CCDT file.  The channel definitions
    that were parsed from the CCDT were then stored within a
    java.util.HashMap keyed against the CCDT object created.
    
    The CCDT object created for each read of the CCDT file would not
    be equal to any previously created CCDT objects.  As such, when
    the channel definitions from the CCDT were added to the
    java.util.HashMap using the CCDT object, it did not replace the
    previous cached entry with the newly parsed channel definitions
    and the size of the java.util.HashMap grew.
    
    The old CCDT and channel definition references were not then
    removed from the java.util.HashMap cache.
    
    This processing occurred within the Java MQI layer.
    

Problem conclusion

  • The Java MQI has been updated such that if a client channel
    definition table (CCDT) is parsed multiple times, any previously
    cached references to the CCDT or the channel definitions it
    contained, are removed from the relevant internal
    java.util.HashMap collections.
    
    ---------------------------------------------------------------
    The fix is targeted for delivery in the following PTFs:
    
    Version    Maintenance Level
    v9.0 CD    9.0.5
    v9.0 LTS   9.0.0.9
    
    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

    IT22694

  • Reported component name

    IBM MQ BASE M/P

  • Reported component ID

    5724H7261

  • Reported release

    903

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    YesHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2017-10-06

  • Closed date

    2017-10-23

  • Last modified date

    2019-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

    IBM MQ BASE M/P

  • Fixed component ID

    5724H7261

Applicable component levels

[{"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Product":{"code":"SSYHRD","label":"IBM MQ"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"903","Edition":"","Line of Business":{"code":"LOB36","label":"IBM Automation"}}]

Document Information

Modified date:
09 October 2019