IBM Support

IT46237: MFT agents create FDC during startup if the agent property "monitorMaxResourcesInPoll" is set to zero

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

  • 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