APAR status
Closed as program error.
Error description
An MQ Managed File Transfer agent is acting as the source agent for a message-to-file transfer when it is stopped unexpectedly. When the agent restarts, the managed transfer resumes and completes successfully. However, the message that was included in the managed transfer is not deleted from the source queue when the transfer finishes. An MQ Managed File Transfer agent trace covering the time when the agent restarts shows that it encountered a NullPointerException while processing the source disposition for the message-to-file transfer. Here is an extract from a trace file that shows this: ----------------------------------------------- [26/02/21 00:04:47.199.5Q] 00000016 @6fc809df c.i.w.t.frame.impl.TransferFrameSenderImpl ----+----+----+ X deleteOpenFile [26/02/21 00:04:47.199.5Q] 00000016 <null> [java.lang.NullPointerException] at: [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.io.queue.FTEQueueChannel.openForRead(FTEQueueChan nel.java:336) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.io.queue.FTEQueueFilterChannel.openForRead(FTEQue ueFilterChannel.java:135) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.transfer.frame.impl.TransferFrameSenderImpl.openA ndLockFile(TransferFrameSenderImpl.java:1454) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.transfer.frame.impl.TransferFrameSenderImpl.delet eOpenFile(TransferFrameSenderImpl.java:1846) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.transfer.impl.TransferSenderRunnable.deleteFile(T ransferSenderRunnable.java:1562) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.transfer.impl.TransferSenderImpl.deleteFile(Trans ferSenderImpl.java:382) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.statestore.impl.FTEMutableSenderState.processSour ceDisposition(FTEMutableSenderState.java:1155) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.statestore.impl.FTEMutableSenderState.addProgress Audit(FTEMutableSenderState.java:854) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.statestore.impl.FTEStateStoreImpl.publishProgress Audit(FTEStateStoreImpl.java:1827) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.statestore.impl.FTEStateStoreImpl.publishProgress Audit(FTEStateStoreImpl.java:1625) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.transfer.impl.TransferSenderRunnable.generateAudi tInformation(TransferSenderRunnable.java:1342) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.transfer.impl.TransferSenderRunnable.auditComplet e(TransferSenderRunnable.java:1499) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.transfer.impl.TransferSenderImpl.onComplete(Trans ferSenderImpl.java:353) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.statestore.impl.FTEStateStoreImpl.sendForgetToFar End(FTEStateStoreImpl.java:1411) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.cmdhandler.impl.FTECommandHandlerStateStoreImpl.p rocessInternalCommand(FTECommandHandlerStateStoreImpl.java:765) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.cmdhandler.impl.MessageHandlerImpl.internalMessag eHandler(MessageHandlerImpl.java:434) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.cmdhandler.impl.MessageHandlerImpl.processCommand (MessageHandlerImpl.java:165) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.cmdhandler.impl.FTECommandHandlerWorkerThread.pro cessCommand(FTECommandHandlerWorkerThread.java:282) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.cmdhandler.impl.FTECommandHandlerWorkerThread.run (FTECommandHandlerWorkerThread.java:173) [26/02/21 00:04:47.199.5Q] 00000016 java.lang.Thread.run(Thread.java:822) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.thread.FTEThread.run(FTEThread.java:70) -----------------------------------------------
Local fix
Problem summary
**************************************************************** USERS AFFECTED: This issue affects users of MQ Managed File Transfer, who have agents that participate in message-to-file transfers. Platforms affected: MultiPlatform **************************************************************** PROBLEM DESCRIPTION: If an MQ Managed File Transfer agent is acting as the source agent for a message-to-file transfer, it will: - Browse the messages on the source queue during the managed transfer. - And only remove the messages from the queue once the managed transfer has completed successfully. In order to do this, the internal TransferCompletedWorker thread (the thread within the agent that handles the source disposition for managed transfers) will use an internal FTEQueueChannel object to make a number of MQGET API calls to remove the messages from the queue. Now, if the source agent was stopped: - After it had sent the message data for a message-to-file transfer to the destination agent. - And before it had received a reply from the destination agent indicating that the message data had been received successfully and the destination file had been written. then when the source agent restarted, it would: - Pick up the reply from the destination agent. - Perform some processing on the managed transfer, to move it into a "Completed" state. - And then put a message onto an internal Java queue, to inform the TransferCompletedWorker thread that the source disposition could now be processed for the managed transfer. When the TransferCompletedWorker thread picked up the message and started to process the source disposition, it found that there wasn't an existing FTEQueueChannel for the managed transfer (as the agent hadn't actually read any messages from the source queue for the managed transfer since it had been restarted). However, when it tried to recreate the FTEQueueChannel and reopen the queue, a NullPointerException occurred. The thread caught the NullPointerException internally, swallowed it up and then skipped over the logic to delete the messages from the source queue. Here is an extract from an MQ Managed File Transfer trace which shows the NullPointerException: ----------------------------------------------- [26/02/21 00:04:47.199.5Q] 00000016 @6fc809df c.i.w.t.frame.impl.TransferFrameSenderImpl ----+----+----+ X deleteOpenFile [26/02/21 00:04:47.199.5Q] 00000016 <null> [java.lang.NullPointerException] at: [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.io.queue.FTEQueueChannel.openForRead(FTEQueueChan nel.java:336) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.io.queue.FTEQueueFilterChannel.openForRead(FTEQue ueFilterChannel.java:135) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.transfer.frame.impl.TransferFrameSenderImpl.openA ndLockFile(TransferFrameSenderImpl.java:1454) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.transfer.frame.impl.TransferFrameSenderImpl.delet eOpenFile(TransferFrameSenderImpl.java:1846) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.transfer.impl.TransferSenderRunnable.deleteFile(T ransferSenderRunnable.java:1562) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.transfer.impl.TransferSenderImpl.deleteFile(Trans ferSenderImpl.java:382) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.statestore.impl.FTEMutableSenderState.processSour ceDisposition(FTEMutableSenderState.java:1155) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.statestore.impl.FTEMutableSenderState.addProgress Audit(FTEMutableSenderState.java:854) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.statestore.impl.FTEStateStoreImpl.publishProgress Audit(FTEStateStoreImpl.java:1827) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.statestore.impl.FTEStateStoreImpl.publishProgress Audit(FTEStateStoreImpl.java:1625) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.transfer.impl.TransferSenderRunnable.generateAudi tInformation(TransferSenderRunnable.java:1342) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.transfer.impl.TransferSenderRunnable.auditComplet e(TransferSenderRunnable.java:1499) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.transfer.impl.TransferSenderImpl.onComplete(Trans ferSenderImpl.java:353) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.statestore.impl.FTEStateStoreImpl.sendForgetToFar End(FTEStateStoreImpl.java:1411) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.cmdhandler.impl.FTECommandHandlerStateStoreImpl.p rocessInternalCommand(FTECommandHandlerStateStoreImpl.java:765) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.cmdhandler.impl.MessageHandlerImpl.internalMessag eHandler(MessageHandlerImpl.java:434) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.cmdhandler.impl.MessageHandlerImpl.processCommand (MessageHandlerImpl.java:165) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.cmdhandler.impl.FTECommandHandlerWorkerThread.pro cessCommand(FTECommandHandlerWorkerThread.java:282) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.cmdhandler.impl.FTECommandHandlerWorkerThread.run (FTECommandHandlerWorkerThread.java:173) [26/02/21 00:04:47.199.5Q] 00000016 java.lang.Thread.run(Thread.java:822) [26/02/21 00:04:47.199.5Q] 00000016 com.ibm.wmqfte.thread.FTEThread.run(FTEThread.java:70) [26/02/21 00:04:47.199.5Q] 00000016 Object ClassLoader = null -----------------------------------------------
Problem conclusion
To resolve this issue, MQ Managed File Transfer agents have been updated so that if: - The internal TransferCompletedWorker thread is processing the source disposition for a message-to-file transfer. - And it finds that there isn't an existing FTEQueueChannel for the managed transfer. then it will successfully create one, and then use it to open the source queue and delete the messages from it. --------------------------------------------------------------- The fix is targeted for delivery in the following PTFs: Version Maintenance Level v9.1 LTS 9.1.0.9 v9.2 LTS 9.2.0.3 v9.x CD 9.2.3 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
IT35701
Reported component name
MQ BASE V9.2
Reported component ID
5724H7281
Reported release
920
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2021-01-26
Closed date
2021-03-17
Last modified date
2021-04-08
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.2
Fixed component ID
5724H7281
Applicable component levels
[{"Line of Business":{"code":"LOB45","label":"Automation"},"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Product":{"code":"SSYHRD","label":"IBM MQ"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"920"}]
Document Information
Modified date:
09 April 2021