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":"LOB45","label":"Automation"}}]
Document Information
Modified date:
30 November 2017