A fix is available
APAR status
Closed as program error.
Error description
A WebSphere MQ classes for Java/JMS 7.5 application created a connection to a queue manager, and the application threw an exception of the form: Exception in thread "JMSCCThreadPoolMaster" java.lang.IllegalThreadStateException at java.lang.ThreadGroup.checkNewThread(ThreadGroup.java:147) at java.lang.Thread.initialize(Thread.java:334) at java.lang.Thread.(Thread.java:267) at java.lang.Thread.(Thread.java:356) at com.ibm.msg.client.commonservices.j2se.workqueue.WorkQueueManage rImplementationThreadPoolWorker.(WorkQueueManagerImplementation. java:950) at com.ibm.msg.client.commonservices.j2se.workqueue.WorkQueueManage rImplementation.createNewThread(WorkQueueManagerImplementation.j ava:496) at com.ibm.msg.client.commonservices.j2se.workqueue.WorkQueueManage rImplementation.getWorkerThread(WorkQueueManagerImplementation.j ava:433) at com.ibm.msg.client.commonservices.j2se.workqueue.WorkQueueManage rImplementation.access$100(WorkQueueManagerImplementation.java:4 6) at com.ibm.msg.client.commonservices.j2se.workqueue.WorkQueueManage rImplementation$WorkQueueManagerThread.run(WorkQueueManagerImple mentation.java:848) After this, the application thread which was requesting the connection hung. Additional Symptom(s) Search Keyword(s):
Local fix
Ensure that the ThreadGroup which the application's queue manager connection requesting thread is not a part of a ThreadGroup which is of the daemon type.
Problem summary
**************************************************************** USERS AFFECTED: Users of the WebSphere MQ classes for Java and WebSphere MQ classes for JMS, which are using an application thread which is part of a ThreadGroup which is of the daemon type. This does NOT affect users of the WebSphere Application Server, or other application servers where threads are provided to the WebSphere MQ classes for Java/JMS by the JEE environment. Platforms affected: AIX, MultiPlatform, HP-UX Itanium, HP-UX PA-RISC, IBM iSeries, Linux on Power, Linux on S390, Linux on x86, Linux on x86-64, Linux on zSeries, Solaris SPARC, Solaris x86-64, Windows, z/OS **************************************************************** PROBLEM DESCRIPTION: When using the WebSphere MQ classes for Java/JMS in a stand-alone Java environment, threads created by the WebSphere MQ classes for Java/JMS for its internal function will inherit properties from the application thread. One of these inherited properties is the daemon state of the "java.lang.ThreadGroup" which the thread belongs to. The daemon state of the ThreadGroup determines if the ThreadGroup should be destroyed once the last thread in the group ends or is destroyed. Once this happens - no further threads can be added to the ThreadGroup. If an application closes all connections to the queue manager, then all the threads will be removed from the ThreadGroup. If it has the daemon status, then the ThreadGroup will be marked as destroyed. If the application should then attempt to open a new connection to the queue manager, an exception will be thrown and the thread requesting the connection will hang. The exception is of the form (stack taken from the 7.5.0.3 version of the WebSphere MQ classes for Java/JMS): Exception in thread "JMSCCThreadPoolMaster" java.lang.IllegalThreadStateException at java.lang.ThreadGroup.checkNewThread(ThreadGroup.java:147) at java.lang.Thread.initialize(Thread.java:334) at java.lang.Thread.(Thread.java:267) at java.lang.Thread.(Thread.java:356) at com.ibm.msg.client.commonservices.j2se.workqueue.WorkQueueManage rImplementation$ThreadPoolWorker.(WorkQueueManagerImplementation .java:950) at com.ibm.msg.client.commonservices.j2se.workqueue.WorkQueueManage rImplementation.createNewThread(WorkQueueManagerImplementation.j ava:496) at com.ibm.msg.client.commonservices.j2se.workqueue.WorkQueueManage rImplementation.getWorkerThread(WorkQueueManagerImplementation.j ava:433) at com.ibm.msg.client.commonservices.j2se.workqueue.WorkQueueManage rImplementation.access$100(WorkQueueManagerImplementation.java:4 6) at com.ibm.msg.client.commonservices.j2se.workqueue.WorkQueueManage rImplementation$WorkQueueManagerThread.run(WorkQueueManagerImple mentation.java:848)
Problem conclusion
The WebSphere MQ classes for Java/JMS have been updated to ensure that regardless of the daemon status of the ThreadGroup which the application's thread belongs to - the ThreadGroup created by the WebSphere MQ classes for Java/JMS is not of the daemon type. This means that all the threads from this ThreadGroup can be created and stopped/destroyed, and new threads can be added to the ThreadGroup, resolving the issue. --------------------------------------------------------------- The fix is targeted for delivery in the following PTFs: Version Maintenance Level v7.5 7.5.0.6 v8.0 8.0.0.2 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
IT06013
Reported component name
WMQ BASE MULTIP
Reported component ID
5724H7241
Reported release
750
Status
CLOSED PER
PE
NoPE
HIPER
YesHIPER
Special Attention
NoSpecatt
Submitted date
2014-12-10
Closed date
2015-01-28
Last modified date
2015-01-28
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
WMQ BASE MULTIP
Fixed component ID
5724H7241
Applicable component levels
R750 PSY
UP
[{"Line of Business":{"code":"LOB45","label":"Automation"},"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Product":{"code":"SSFKSJ","label":"WebSphere MQ"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"7.5"}]
Document Information
Modified date:
24 September 2021