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