APAR status
Closed as program error.
Error description
An MQ Managed File Transfer (MFT) agent has been configured with some Resource Monitors defined on it and the entry "monitorMaxResourcesInPoll=0" in its "agent.properties" file. When the agent starts up it generates an FDC like the example below. As a result the Resource Monitors fail to do any polls. ------------------------------------------------------------ Class: com.ibm.wmqfte.monitor.management.MonitorWork Method: generateFFDC Probe: FFDC_005 Cause: java.lang.IllegalArgumentException java.lang.IllegalArgumentException at java.util.concurrent.LinkedBlockingQueue.<init>(LinkedBlockingQu eue.java:272) at com.ibm.wmqfte.monitor.resource.impl.MonitorResourceItemWorker.< init>(MonitorResourceItemWorker.java:61) at com.ibm.wmqfte.monitor.matcher.MonitorMatcher.executeWorker(Moni torMatcher.java:332) at com.ibm.wmqfte.monitor.management.MonitorWork.buildListOfResourc esUsingWorkerThread(MonitorWork.java:758) at com.ibm.wmqfte.monitor.management.MonitorWork.buildListOfResourc es(MonitorWork.java:641) at com.ibm.wmqfte.monitor.management.MonitorWork.execute(MonitorWor k.java:391) at com.ibm.wmqfte.monitor.management.MonitorImpl.run(MonitorImpl.ja va:171) at com.ibm.wmqfte.monitor.management.MonitorTimerTask.run(MonitorTi merTask.java:78) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.ja va:522) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:319) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFuture Task.access$301(ScheduledThreadPoolExecutor.java:191) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFuture Task.run(ScheduledThreadPoolExecutor.java:305) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExec utor.java:1160) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExe cutor.java:635) at java.lang.Thread.run(Thread.java:825) ------------------------------------------------------------
Local fix
The customer can also prevent the issue from occurring by either: Removing the entry for the monitorMaxResourcesInPoll property in the agent's agent.properties file. Or changing the entry so that the property is set to -1. Both of these options will ensure that the agent's monitors will trigger on an unlimited number of items in each poll, and not generate the FDC.
Problem summary
**************************************************************** USERS AFFECTED: This issue affects users of IBM MQ Managed File Transfer (MFT). Platforms affected: MultiPlatform **************************************************************** PROBLEM DESCRIPTION: The agent property "monitorMaxResourcesInPoll" specifies the maximum number of items that a monitor will trigger on when polling a resource. If the property is set to a value less than or equal to zero, then monitors should trigger on an unlimited number of items in each poll. The default value of the property is -1. More information on the property can be found "Table 18. Advanced agent properties: Resource monitoring" in the topic in the MQ sections of the IBM Documentation site (the topic in the MQ 9.3 section of the site can be found here: https://www.ibm.com/docs/en/ibm-mq/9.3?topic=reference-mft-agent properties-file#properties__mon_props). Now, if an agent has been configured to limit the number of items that a monitor will trigger on during each poll (i.e. the "monitorMaxResourcesInPoll" property has been set to a value greater than zero), it will create an internal worker thread for each monitor. Each worker thread creates an instance of a Java LinkedBlockingQueue object (with a size equal to the value of "monitorMaxResourcesInPoll") and uses that to store the items that it finds. However, due to a logic issue, an agent would also try and use a worker thread for monitors if "monitorMaxResourcesInPoll" property was set to zero. As a result, it would try to create the instance of a LinkedBlockingQueue with a size of zero. This was not valid, and so the LinkedBlockingQueue constructor threw an IlegalArgumentException. The agent caught this, stopped the monitor it was trying to start and generated an FDC containing the information shown below: ...... Class: com.ibm.wmqfte.monitor.management.MonitorWork Method: generateFFDC Probe: FFDC_005 Cause: java.lang.IllegalArgumentException java.lang.IllegalArgumentException at java.util.concurrent.LinkedBlockingQueue.<init>(LinkedBlockingQu eue.java:272) at com.ibm.wmqfte.monitor.resource.impl.MonitorResourceItemWorker.< init>(MonitorResourceItemWorker.java:61) at com.ibm.wmqfte.monitor.matcher.MonitorMatcher.executeWorker(Moni torMatcher.java:332) at com.ibm.wmqfte.monitor.management.MonitorWork.buildListOfResourc esUsingWorkerThread(MonitorWork.java:758) at com.ibm.wmqfte.monitor.management.MonitorWork.buildListOfResourc es(MonitorWork.java:641) at com.ibm.wmqfte.monitor.management.MonitorWork.execute(MonitorWor k.java:391) at com.ibm.wmqfte.monitor.management.MonitorImpl.run(MonitorImpl.ja va:171) at com.ibm.wmqfte.monitor.management.MonitorTimerTask.run(MonitorTi merTask.java:78) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.ja va:522) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:319) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFuture Task.access$301(ScheduledThreadPoolExecutor.java:191) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFuture Task.run(ScheduledThreadPoolExecutor.java:305) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExec utor.java:1160) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExe cutor.java:635) at java.lang.Thread.run(Thread.java:825) ......
Problem conclusion
To resolve this issue, MQ Managed File Transfer agents have been updated to only use worker threads for resource monitors if the "monitorMaxResourcesInPoll" property is set to a value greater than zero. --------------------------------------------------------------- The fix is targeted for delivery in the following PTFs: Version Maintenance Level v9.3 LTS 9.3.0.25 v9.4 LTS 9.4.0.5 v9.x CD 9.4.1 The latest available maintenance can be obtained from 'IBM MQ Recommended Fixes' https://www.ibm.com/support/pages/recommended-fixes-ibm-mq If the maintenance level is not yet available information on its planned availability can be found in 'IBM MQ Planned Maintenance Release Dates' https://ibm.biz/mqplannedmaintenance ---------------------------------------------------------------
Temporary fix
Comments
APAR Information
APAR number
IT46237
Reported component name
MQ BASE V9.3
Reported component ID
5724H7291
Reported release
930
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2024-05-27
Closed date
2024-07-17
Last modified date
2024-07-17
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
MQ BASE V9.3
Fixed component ID
5724H7291
Applicable component levels
[{"Business Unit":{"code":"BU048","label":"IBM Software"},"Product":{"code":"SSYHRD","label":"IBM MQ"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"9.3","Line of Business":{"code":"LOB67","label":"IT Automation \u0026 App Modernization"}}]
Document Information
Modified date:
17 July 2024