Robert,
The CPF7306 is not helpful; it is a "summary" *ESCAPE message.
You want to drill down into the details of that MCH5802 ... when I issue DSPMSGD MCH5802, I see this:
Display Formatted Message Text
System: S1234567
Message ID . . . . . . . . . : MCH5802
Message file . . . . . . . . : QCPFMSG
Library . . . . . . . . . : QSYS
Message . . . . : Lock operation for object &1 not satisfied.
Cause . . . . . : The lock operation was not satisfied for object &1 in the
specified time interval of &2 seconds. The lock holder type is &3. The lock
holder name is &4. The lock holder thread identifier is &5.
The lock holder type has the following meaning:
0 - The lock holder is a Licensed Internal Code (LIC) task. The lock
holder name and thread identifier do not apply.
1 - The lock holder is a job.
2 - The lock holder is a transaction control structure. The lock holder
name and thread identifier do not apply.
Bottom
Press Enter to continue.
F3=Exit F11=Display unformatted message text F12=Cancel
What values do you see for those substitution variables (&1, &2, etc.)?
Hope that helps,
Mark S. Waterbury
On Friday, April 21, 2023 at 11:46:19 AM EDT, Robert Wenzel <robert.wenzel@xxxxxxxxx> wrote:
Sorry for the lengthiness of the post but wanted to elaborate on the issue
and all the steps taken so as not to get questions back for things we have
already tried.
We have a multi-member file in a library that is shared across multiple
library lists in a multi-tenant LPAR. Jobs often run the same
RPGLE program at the same time whose function is to add a new member to the shared file. This process is run in a client-specific single threaded job queue so the program can run concurrently between "clients". It has been performing amicably in this batch process for many years without issue.
We are at 7.4 O/S and have installed PTFs in March for a QTEMP cataloguing issue but the file in question, here, is not a QTEMP file.
The number of members in the subject file is monitored daily to remove very old members so that we do not exceed the max member limit.
Recently, several jobs threw an MCH5802 escape message (Lock operation for object &1 not satisfied) from program RmslLockMiObject which culminated in a CPF7306 escape message (Member &1 not added to file &2 in &3.).
A monitor-endmon block was added to the RPG program but we have been unable to test and recreate the error even when we issue an ALCOBJ command with lock state *EXCL on a second workstation. We have also tried using CHGPF and RGZPFM to create a lock on the file, yet the ADDPFM command in the RPG still creates a member (does not throw the lock error).
FYI, when we try to use DBU on that file, after the ALCOBJ command, it
throws (CPF3203) "Cannot allocate object for file &1 in &2." Also, when we created a CLLE program to be called from the RPGLE program to perform the ADDPFM statement, it still creates the member in the subject file and does not throw any errors.
Does anyone have any advice on how to get a lock on the file that will
create a CPF7306 error?
*Robert Wenzel, Senior Software Engineer*
iSeries Applications Support and Development
As an Amazon Associate we earn from qualifying purchases.