You want to alter an application CFSTRUCT to change from RECOVER(YES) to RECOVER(NO) because only non-persistent messages are being used. The command fails due to the structure being in use.
CSQM101I CSQMACFS CFSTRUCT(APPLIST1) IS CURRENTLY IN USE
CSQM090E CSQMACFS FAILURE REASON CODE X'00D44005'
CSQ9023E CSQMACFS ' ALTER CFSTRUCT' ABNORMAL COMPLETION
You can only change RECOVER(YES) to RECOVER(NO) if all the queues that reference the CF structure are both empty (have no messages or uncommitted activity) and closed. The same is true for lowering the CFLEVEL or for doing DEFINE REPLACE. See the parameter descriptions for DEFINE CFSTRUCT.
Resolving The Problem
Find a time when the queues are clear (or can be cleared) and are not in use to make the change. Be aware that setting RECOVER(NO) will mean persistent messages can not be backed up and recovered.
- You can see which queues on the structure have use counts and non-zero depths using the CSQOREXX panels or the command:
- /cpf DIS QUEUE(*) CFSTRUCT(APPLIST1) OPPROCS IPPROCS CURDEPTH CMDSCOPE(*) WHERE(CURDEPTH,GT,0)
where "cpf" is the command prefix for the queue manager.
The commands can be repeated with filters of:
- Stop any applications that are using the queues.
Special handling for SYSTEM.QSG.* queues:
- If the structure contains the SYSTEM.QSG.TRANSMIT.QUEUE, it will be in use by IGQAGN00. That is the Intra-Group Queueing (IGQ) agent. To clear the use count, do one of the following:
- If SYSTEM.QSG.CHANNEL.SYNCQ is in use, stop any inbound or outbound shared channels.
- Use the CSQOREXX panels to set
Put enabled . . . . . . . . . N Y=Yes, N=No
Get enabled . . . . . . . . . N Y=Yes, N=No
- / cpf ALTER QLOCAL(SYSTEM.QSG.TRANSMIT.QUEUE) GET(DISABLED) PUT(ENABLED)
When you ENABLE the queue again, the agent will restart itself within a few minutes.
WebSphere MQ WMQ
15 June 2018