Kbase P88225: Errors (438) and (49) when running an Application that retrieves records with NO-LOCK
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  16/10/2008 |
|
Status: Verified
SYMPTOM(s):
Errors (438) and (49) when running an Application
Record being retrieved with NO-LOCK
Attempting to refetch a record by RECID
Client attempting to access recid <record-number> not part of file <file-number>. (438)
SYSTEM ERROR: Memory violation. (49)
CAUSE:
RECID being reused points to a different record in a different table. First user retrieves the record and save its recid, then a second user deletes that record and a new record is created in another table with the same RECID. First user tries to retrieve the old record again, but now that RECID points to a different record
FIX:
Follow these steps to avoid the occurrence of this issue:
1- Find out the name of the table the RECID currently belongs to by running a query like this:
FOR EACH _file WHERE _file._file-number = <file-number>
2- Modify the code of the program that the first Application user was running so that it reads/retrieves the record with a SHARE-LOCK instead of a NO-LOCK. By using a SHARE-LOCK, the first user will prevent the record from being deleted by the second user