IBM Support

IT23101: MQ V9 Resource Adapter throws a ConcurrentModificationException when binding a JMS Destination object into JNDI

Subscribe to this APAR

By subscribing, you receive periodic emails alerting you to the status of the APAR, along with a link to the fix after it becomes available. You can track this item individually or track all items by product.

Notify me when this APAR changes.

Notify me when an APAR for this component changes.

 

APAR status

  • Closed as program error.

Error description

  • When tracing the MQ JCA Resource Adapter in a WebSphere
    Application Server (WSAS) V9 environment where the trace
    specification, which has been configured from startup, has been
    specified as:
    
    *=finer:jmsApi=all:Messaging=all:com.ibm.mq.*=all:JMSApi=all:com
    .ibm.ws.cdi.jms*=all
    
    a java.lang.ConcurrentModificationException is thrown when an
    attempt is made to bind a JMS Destination object (Queue or
    Topic) into JNDI.
    
    The WSAS SystemOut.log file report an error similar to the
    following:
    
    [timestamp] 00000001 ResourceMgrIm E   WSVR0017E: Error
    encountered binding the J2EE resource, <JMS Destination name>,
    as <JNDI name> from
    <WSAS_Install_Directory>config/cells/<WSAS_Cell_Name>/nodes/<WSA
    S_Node_Name>/servers/<WSAS_Server_Name>/resources.xml
    
    com.ibm.ws.runtime.component.binder.ResourceBindingException:
    invalid configuration passed to resource binding logic. REASON:
    java.util.ConcurrentModificationException
      at
    com.ibm.ws.runtime.component.binder.MQQueueBinder.getBindingObje
    ct
           (MQQueueBinder.java:343)
      at com.ibm.ws.runtime.component.ResourceMgrImpl.bind
    	   (ResourceMgrImpl.java:517)
      at
    com.ibm.ws.runtime.component.ResourceMgrImpl.installResourceProv
    ider
           (ResourceMgrImpl.java:1546)
      ...
    
    An FFDC is also generated showing the Java exception stack of
    the java.lang.ConcurrentModificationException:
    
    [11/9/17 13:44:31:083 GMT]     FFDC
    Exception:java.util.ConcurrentModificationException
    SourceId:com.ibm.ws.runtime.component.binder.MQQueueBinder.getBi
    ndingObject ProbeId:132
    Reporter:com.ibm.ws.runtime.component.binder.MQQueueBinder@9a46d
    121
    java.util.ConcurrentModificationException
      at java.util.HashMap$HashIterator.nextNode
      at java.util.HashMap$EntryIterator.next
      at java.util.HashMap$EntryIterator.next
      at
    com.ibm.msg.client.jms.internal.JmsPropertyContextImpl.initCache
      at
    com.ibm.msg.client.jms.internal.JmsPropertyContextImpl.setProvid
    erPropertyContext
      at
    com.ibm.msg.client.wmq.common.internal.WMQPropertyContext.<init>
      at
    com.ibm.msg.client.wmq.common.internal.WMQDestination.<init>
      at
    com.ibm.msg.client.wmq.common.internal.WMQDestination.<init>
      at
    com.ibm.msg.client.wmq.factories.WMQFactoryFactory.createProvide
    rDestination
      at
    com.ibm.msg.client.jms.admin.JmsDestinationImpl.setProviderDesti
    nation
      at
    com.ibm.msg.client.jms.admin.JmsDestinationImpl.setProviderDesti
    nation
      at com.ibm.msg.client.jms.admin.JmsDestinationImpl.initialise
      at com.ibm.msg.client.jms.admin.JmsDestinationImpl.<init>
      at com.ibm.msg.client.jms.admin.JmsJndiDestinationImpl.<init>
      at com.ibm.mq.jms.MQDestination.<init>
      at com.ibm.mq.jms.MQQueue.<init>
      at com.ibm.mq.jms.admin.QueueBAO.setFromProperties
      at com.ibm.mq.jms.admin.AdminObject.<init>
      at com.ibm.mq.jms.admin.AdminObject.<init>
      at
    com.ibm.ejs.jms.JMSResourceRefBuilderImpl.createDestinationRefer
    enceable
      at
    com.ibm.ejs.jms.JMSResourceRefBuilderImpl.createMQQueueReference
    able
      at
    com.ibm.ws.runtime.component.binder.MQQueueBinder.getBindingObje
    ct
      at com.ibm.ws.runtime.component.ResourceMgrImpl.bind
      at
    com.ibm.ws.runtime.component.ResourceMgrImpl.installResourceProv
    ider
      at
    com.ibm.ws.runtime.component.ResourceMgrImpl.installResource
      at
    com.ibm.ws.runtime.component.ResourceMgrImpl.installResources
      at com.ibm.ws.runtime.component.ResourceMgrImpl.loadResources
      at com.ibm.ws.runtime.component.ResourceMgrImpl.start
      at
    com.ibm.ws.runtime.component.ContainerHelper.startComponents
      at com.ibm.ws.runtime.component.ContainerImpl.startComponents
      at com.ibm.ws.runtime.component.ContainerImpl.start
      at com.ibm.ws.runtime.component.ApplicationServerImpl.start
      at
    com.ibm.ws.runtime.component.ContainerHelper.startComponents
      at com.ibm.ws.runtime.component.ContainerImpl.startComponents
      at com.ibm.ws.runtime.component.ContainerImpl.start
      at com.ibm.ws.runtime.component.ServerImpl.start
      at com.ibm.ws.runtime.WsServerImpl.bootServerContainer
      at com.ibm.ws.runtime.WsServerImpl.start
      at com.ibm.ws.runtime.WsServerImpl.main
    

Local fix

  • Do not use *=finer in the log and trace level settings in
    WebSphere Application Server.
    
    Change the their log and trace level from using the option:
    
      *=finer
    
    to:
    
      *=info
    
    and then restart the server.
    

Problem summary

  • ****************************************************************
    USERS AFFECTED:
    This issue affects users of the MQ messaging provider within
    WebSphere Application Server who:
    
      - have enabled Java Message Service (JMS) diagnostics trace
    
    and
    
      - specified the logging detail level as "*=finer".
    
    For example:
    
    
    *=finer:jmsApi=all:Messaging=all:com.ibm.mq.*=all:JMSApi=all:com
    .ibm.ws.cdi.jms*=all
    
    
    Platforms affected:
    MultiPlatform
    
    ****************************************************************
    PROBLEM DESCRIPTION:
    While binding a JMS Destination object into JNDI, an instance of
    the object is created from the saved configuration properties.
     As part of this, an Iterator is created from an Map instance
    and used to set some cache values from commonly used
    configuration properties.
    
    When using the WebSphere Application Server "finer" logging
    detail level, as opposed to default "info", toString() was
    called on an internal WMQDestination object by the tracing
    mechanism while the Iterator was being used.  The toString()
    call resulted in all of the cached properties being written back
    to the Map.  The result was that the Map was structurally
    modified while the same thread was iterating over it.  As such,
    when the thread call next() on the Iterator it had created from
    the Map, the JVM threw a
    java.lang.ConcurrentModificationException.
    

Problem conclusion

  • The MQ classes for JMS code has been updated to create an
    Iterator from a copy of the properties Map that is used when
    initialising the cached properties.
    
    ---------------------------------------------------------------
    The fix is targeted for delivery in the following PTFs:
    
    Version    Maintenance Level
    v9.0 LTS   9.0.0.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

    IT23101

  • Reported component name

    IBM MQ BASE M/P

  • Reported component ID

    5724H7261

  • Reported release

    900

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2017-11-09

  • Closed date

    2017-11-30

  • Last modified date

    2017-11-30

  • 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

  • R900 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":"9.0","Edition":"","Line of Business":{"code":"LOB36","label":"IBM Automation"}}]

Document Information

Modified date:
30 November 2017