IBM Support

IT44258: Managed File Transfer (MFT) agent stops unexpectedly due to a NullPointerException when doing a message-to-file transfer

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 IBM MQ Managed File Transfer (MFT) agent is acting as the
    source agent for a message-to-file transfer containing multiple
    transfer items. Intermittently, the agent stops unexpectedly and
    generates an ABEND file containing information similar to the
    example shown below:
    
    Thread:     88259
    (TransferSender[414d51204d4132564650524f44514d20fb21756304669c41
    ])
    Class:      com.ibm.wmqfte.thread.FTEThread
    Instance:   7c63fe6d
    Method:     uncaughtException
    Probe:      ABEND_001
    Cause:      java.lang.NullPointerException
    java.lang.NullPointerException
      at java.util.Hashtable.put(Hashtable.java:506)
      at java.util.Properties.setProperty(Properties.java:180)
      at
    com.ibm.wmqfte.utils.transfer.FTETransferItem.getAttributes(FTET
    ransferItem.java:530)
      at
    com.ibm.wmqfte.io.FTEFileFactory.createBinaryChannelFilter(FTEFi
    leFactory.java:621)
      at
    com.ibm.wmqfte.io.FTEFileFactory.newFTEFileWithChannel(FTEFileFa
    ctory.java:368)
      at
    com.ibm.wmqfte.transfer.frame.impl.TransferFrameSenderImpl.openA
    ndLockFile(TransferFrameSenderImpl.java:1415)
      at
    com.ibm.wmqfte.transfer.frame.impl.TransferFrameSenderImpl.reque
    stChunk(TransferFrameSenderImpl.java:674)
      at
    com.ibm.wmqfte.transfer.frame.impl.TransferFrameSenderImpl.acces
    s$000(TransferFrameSenderImpl.java:104)
      at
    com.ibm.wmqfte.transfer.frame.impl.TransferFrameSenderImpl$Chunk
    Requester.processFileIORequest(TransferFrameSenderImpl.java:146)
      at
    com.ibm.wmqfte.transfer.frame.impl.TransferFrameIOWorker.doWorkI
    mpl(TransferFrameIOWorker.java:318)
      at
    com.ibm.wmqfte.transfer.frame.impl.TransferFrameSenderImpl$Inlin
    eChunkRequester.request(TransferFrameSenderImpl.java:249)
      at
    com.ibm.wmqfte.transfer.frame.impl.TransferFrameSenderImpl$Chunk
    Requester.request(TransferFrameSenderImpl.java:136)
      at
    com.ibm.wmqfte.transfer.frame.impl.TransferFrameIOWorker.request
    NoBlock(TransferFrameIOWorker.java:160)
      at
    com.ibm.wmqfte.transfer.frame.impl.TransferFrameSenderImpl.getNe
    xtChunk(TransferFrameSenderImpl.java:572)
      at
    com.ibm.wmqfte.transfer.impl.TransferSenderRunnable.doTransfer(T
    ransferSenderRunnable.java:938)
      at
    com.ibm.wmqfte.transfer.impl.TransferSenderRunnable.run(Transfer
    SenderRunnable.java:633)
      at java.lang.Thread.run(Thread.java:825)
      at com.ibm.wmqfte.thread.FTEThread.run(FTEThread.java:70)
    

Local fix

  • n/a
    

Problem summary

  • ****************************************************************
    USERS AFFECTED:
    This issue affects users of IBM MQ Managed File Transfer (MFT)
    who have agents that act as the source agent for message-to-file
    transfers that contain multiple transfer items.
    
    
    Platforms affected:
    MultiPlatform
    
    ****************************************************************
    PROBLEM DESCRIPTION:
    Every transfer item in a managed transfer has some internal
    attributes associated with it, which are used by the source and
    destination agents during the managed transfer process. The
    attributes are added to an item when it is first created, and
    are read at various points during a managed transfer. If an item
    represents either a complete message group, or individual
    message not in a group, then additional attributes are also
    added and removed from the item during the managed transfer.
    
    Now, access to the attributes was not thread safe. This meant
    that:
    
    - If an internal TransferSender thread was trying to read the
    attributes for a transfer item that represented either a
    complete message group, or an individual message not in a group.
    - And, at the same time, the agent's CommandHandler thread was
    adding and removing attributes from the same transfer item.
    
    then it would be possible for the TransferSender thread to read
    the name of an attribute and then find that it was no longer
    present when it tried to get the value. In this situation, the
    agent would stop unexpectedly and generate an ABEND file
    containing information similar to the example shown below:
    
    Thread:    <number> (TransferSender[<transfer identifier>])
    Class:      com.ibm.wmqfte.thread.FTEThread
    ......
    Method:     uncaughtException
    Probe:      ABEND_001
    Cause:      java.lang.NullPointerException
    java.lang.NullPointerException
      at java.util.Hashtable.put(Hashtable.java:506)
      at java.util.Properties.setProperty(Properties.java:180)
      at
    com.ibm.wmqfte.utils.transfer.FTETransferItem.getAttributes(FTET
    ransferItem.java:530)
      at
    com.ibm.wmqfte.io.FTEFileFactory.createBinaryChannelFilter(FTEFi
    leFactory.java:621)
      at
    com.ibm.wmqfte.io.FTEFileFactory.newFTEFileWithChannel(FTEFileFa
    ctory.java:368)
      at
    com.ibm.wmqfte.transfer.frame.impl.TransferFrameSenderImpl.openA
    ndLockFile(TransferFrameSenderImpl.java:1415)
      at
    com.ibm.wmqfte.transfer.frame.impl.TransferFrameSenderImpl.reque
    stChunk(TransferFrameSenderImpl.java:674)
      at
    com.ibm.wmqfte.transfer.frame.impl.TransferFrameSenderImpl.acces
    s$000(TransferFrameSenderImpl.java:104)
      at
    com.ibm.wmqfte.transfer.frame.impl.TransferFrameSenderImpl$Chunk
    Requester.processFileIORequest(TransferFrameSenderImpl.java:146)
      at
    com.ibm.wmqfte.transfer.frame.impl.TransferFrameIOWorker.doWorkI
    mpl(TransferFrameIOWorker.java:318)
      at
    com.ibm.wmqfte.transfer.frame.impl.TransferFrameSenderImpl$Inlin
    eChunkRequester.request(TransferFrameSenderImpl.java:249)
      at
    com.ibm.wmqfte.transfer.frame.impl.TransferFrameSenderImpl$Chunk
    Requester.request(TransferFrameSenderImpl.java:136)
      at
    com.ibm.wmqfte.transfer.frame.impl.TransferFrameIOWorker.request
    NoBlock(TransferFrameIOWorker.java:160)
      at
    com.ibm.wmqfte.transfer.frame.impl.TransferFrameSenderImpl.getNe
    xtChunk(TransferFrameSenderImpl.java:572)
      at
    com.ibm.wmqfte.transfer.impl.TransferSenderRunnable.doTransfer(T
    ransferSenderRunnable.java:938)
      at
    com.ibm.wmqfte.transfer.impl.TransferSenderRunnable.run(Transfer
    SenderRunnable.java:633)
      at java.lang.Thread.run(Thread.java:825)
      at com.ibm.wmqfte.thread.FTEThread.run(FTEThread.java:70)
    

Problem conclusion

  • To resolve this issue, MQ Managed File Transfer (MFT) agents now
    synchronize on a transfer item's attributes whenever they:
    
    - Add a new attribute.
    - Remove an existing attribute.
    - And get an attribute's value.
    
    This ensures that only one thread within the agent can access
    the attributes at any one time, which prevents the issue
    reported in this APAR from occurring.
    
    ---------------------------------------------------------------
    The fix is targeted for delivery in the following PTFs:
    
    Version    Maintenance Level
    v9.x CD    9.3.4
    
    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

    IT44258

  • Reported component name

    MQ BASE V9.3

  • Reported component ID

    5724H7291

  • Reported release

    931

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2023-07-28

  • Closed date

    2023-08-25

  • Last modified date

    2023-08-25

  • 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":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSYHRD","label":"IBM MQ"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"931","Line of Business":{"code":"LOB45","label":"Automation"}}]

Document Information

Modified date:
27 August 2023