APAR status
Closed as program error.
Error description
An IBM MQ Managed File Transfer (MFT) file-to-file transfer is submitted, with the source disposition parameter (-sd) set to delete. After the file has been successfully transferred to the destination, the deletion of the source file fails (possibly due to agent recovery). When this happens, the source agent attempts to write a message to its transfer log (if it has been enabled). However, the attempt fails and a java.lang.IndexOutOfBoundsException is written to the agent's event log (output0.log). An example of the exception is shown below: java.lang.IndexOutOfBoundsException: Index: 1, Size: 1 at java.util.ArrayList.rangeCheck(ArrayList.java:670) at java.util.ArrayList.get(ArrayList.java:446) at com.ibm.wmqfte.utils.TransferEventLog.formatJSONHandCraft(Transf erEventLog.java:825) at com.ibm.wmqfte.ras.impl.TransferLogFormatter.formatJSON(Transfer LogFormatter.java:99) at com.ibm.wmqfte.ras.impl.TransferLogFormatter.format(TransferLogF ormatter.java:70) at java.util.logging.StreamHandler.publish(StreamHandler.java:222) at com.ibm.wmqfte.ras.impl.SecureFileHandler.publish(SecureFileHand ler.java:231) at com.ibm.wmqfte.ras.impl.TransferLogHandler.publish(TransferLogHa ndler.java:186) at java.util.logging.Logger.log(Logger.java:749) at com.ibm.wmqfte.ras.impl.TransferLogImpl.log(TransferLogImpl.java :85) at com.ibm.wmqfte.ras.impl.TransferLogImpl.internalInfo(TransferLog Impl.java:201) at com.ibm.wmqfte.ras.TransferLog.info(TransferLog.java:471) at com.ibm.wmqfte.transfer.impl.TransferSenderRunnable.deleteFile(T ransferSenderRunnable.java:1799) at com.ibm.wmqfte.transfer.impl.TransferSenderImpl.deleteFile(Trans ferSenderImpl.java:383) at com.ibm.wmqfte.statestore.impl.FTEMutableSenderState.processSour ceDisposition(FTEMutableSenderState.java:1303) at com.ibm.wmqfte.statestore.impl.FTEMutableSenderState.addProgress Audit(FTEMutableSenderState.java:921) at com.ibm.wmqfte.statestore.impl.FTEStateStoreImpl.publishProgress Audit(FTEStateStoreImpl.java:1960) at com.ibm.wmqfte.statestore.impl.FTEStateStoreImpl.publishProgress Audit(FTEStateStoreImpl.java:1757) at com.ibm.wmqfte.transfer.impl.TransferSenderRunnable.generateAudi tInformation(TransferSenderRunnable.java:1544) at com.ibm.wmqfte.transfer.impl.TransferSenderRunnable.auditComplet e(TransferSenderRunnable.java:1705) at com.ibm.wmqfte.transfer.impl.TransferSenderImpl.onComplete(Trans ferSenderImpl.java:354) at com.ibm.wmqfte.statestore.impl.FTEStateStoreImpl.sendForgetToFar End(FTEStateStoreImpl.java:1509) at com.ibm.wmqfte.cmdhandler.impl.FTECommandHandlerStateStoreImpl.p rocessInternalCommand(FTECommandHandlerStateStoreImpl.java:773) at com.ibm.wmqfte.cmdhandler.impl.MessageHandlerImpl.internalMessag eHandler(MessageHandlerImpl.java:436) at com.ibm.wmqfte.cmdhandler.impl.MessageHandlerImpl.processCommand (MessageHandlerImpl.java:165) at com.ibm.wmqfte.cmdhandler.impl.FTECommandHandlerWorkerThread.pro cessCommand(FTECommandHandlerWorkerThread.java:283) at com.ibm.wmqfte.cmdhandler.impl.FTECommandHandlerWorkerThread.run (FTECommandHandlerWorkerThread.java:174) at java.lang.Thread.run(Thread.java:825)
Local fix
n/a
Problem summary
**************************************************************** USERS AFFECTED: This issue affects users of IBM MQ Managed File Transfer (MFT), who have source agents configured with the transfer log functionality enabled. Platforms affected: MultiPlatform **************************************************************** PROBLEM DESCRIPTION: If an MQ Managed File Transfer (MFT) agent has been configured with the transfer log functionality enabled, then: - If it is acting as the source agent for a file-to-file transfer that has a source disposition of "delete" - And the source file cannot be deleted for some reason it will write a BFGTL0010 entry into the transfer log (transferlog<number>.json). The entry will contain: - The name of the file that couldn't be deleted. - And details of any exceptions that occurred during the delete operation. However, there was a code path in which the agent would try to write a BFGTL0010 entry which only contained an exception, and not a filename. When this happened, the agent would generate a java.lang.IndexOutOfBoundsException as it tried to access a value that did not exist - the exception would then be written to the agent's event log (output0.log). An example of the exception is shown below: java.lang.IndexOutOfBoundsException: Index: 1, Size: 1 at java.util.ArrayList.rangeCheck(ArrayList.java:670) at java.util.ArrayList.get(ArrayList.java:446) at com.ibm.wmqfte.utils.TransferEventLog.formatJSONHandCraft(Transf erEventLog.java:825) at com.ibm.wmqfte.ras.impl.TransferLogFormatter.formatJSON(Transfer LogFormatter.java:99) at com.ibm.wmqfte.ras.impl.TransferLogFormatter.format(TransferLogF ormatter.java:70) at java.util.logging.StreamHandler.publish(StreamHandler.java:222) at com.ibm.wmqfte.ras.impl.SecureFileHandler.publish(SecureFileHand ler.java:231) at com.ibm.wmqfte.ras.impl.TransferLogHandler.publish(TransferLogHa ndler.java:186) at java.util.logging.Logger.log(Logger.java:749) at com.ibm.wmqfte.ras.impl.TransferLogImpl.log(TransferLogImpl.java :85) at com.ibm.wmqfte.ras.impl.TransferLogImpl.internalInfo(TransferLog Impl.java:201) at com.ibm.wmqfte.ras.TransferLog.info(TransferLog.java:471) at com.ibm.wmqfte.transfer.impl.TransferSenderRunnable.deleteFile(T ransferSenderRunnable.java:1799) at com.ibm.wmqfte.transfer.impl.TransferSenderImpl.deleteFile(Trans ferSenderImpl.java:383) at com.ibm.wmqfte.statestore.impl.FTEMutableSenderState.processSour ceDisposition(FTEMutableSenderState.java:1303) at com.ibm.wmqfte.statestore.impl.FTEMutableSenderState.addProgress Audit(FTEMutableSenderState.java:921) at com.ibm.wmqfte.statestore.impl.FTEStateStoreImpl.publishProgress Audit(FTEStateStoreImpl.java:1960) at com.ibm.wmqfte.statestore.impl.FTEStateStoreImpl.publishProgress Audit(FTEStateStoreImpl.java:1757) at com.ibm.wmqfte.transfer.impl.TransferSenderRunnable.generateAudi tInformation(TransferSenderRunnable.java:1544) at com.ibm.wmqfte.transfer.impl.TransferSenderRunnable.auditComplet e(TransferSenderRunnable.java:1705) at com.ibm.wmqfte.transfer.impl.TransferSenderImpl.onComplete(Trans ferSenderImpl.java:354) at com.ibm.wmqfte.statestore.impl.FTEStateStoreImpl.sendForgetToFar End(FTEStateStoreImpl.java:1509) at com.ibm.wmqfte.cmdhandler.impl.FTECommandHandlerStateStoreImpl.p rocessInternalCommand(FTECommandHandlerStateStoreImpl.java:773) at com.ibm.wmqfte.cmdhandler.impl.MessageHandlerImpl.internalMessag eHandler(MessageHandlerImpl.java:436) at com.ibm.wmqfte.cmdhandler.impl.MessageHandlerImpl.processCommand (MessageHandlerImpl.java:165) at com.ibm.wmqfte.cmdhandler.impl.FTECommandHandlerWorkerThread.pro cessCommand(FTECommandHandlerWorkerThread.java:283) at com.ibm.wmqfte.cmdhandler.impl.FTECommandHandlerWorkerThread.run (FTECommandHandlerWorkerThread.java:174) at java.lang.Thread.run(Thread.java:825)
Problem conclusion
To resolve this issue, IBM MQ Managed File Transfer source agents have been updated to always specify the source file name along with the exception details when writing a BFGTL0010 entry to the transfer log. In addition to this, the validation on the number of inserts passed to the transfer log functionality when writing a BFGTL0010 entry has been changed to ensure that the agent doesn't try to access inserts that don't exist. --------------------------------------------------------------- The fix is targeted for delivery in the following PTFs: Version Maintenance Level v9.3 LTS 9.3.0.15 v9.x CD 9.3.5 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
IT44706
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
2023-10-10
Closed date
2023-10-31
Last modified date
2023-10-31
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":"9.3","Line of Business":{"code":"LOB45","label":"Automation"}}]
Document Information
Modified date:
01 November 2023