Consultor Eletrônico



Kbase P12739: 5134 and 438 errors on multi-volume 8.3B
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   10/15/2008
Status: Verified

FACT(s) (Environment):

Windows NT 4.0
Progress 8.3B

SYMPTOM(s):

SYSTEM ERROR: cxgetcur: user <user number> trying to use a free cursor (5134)

Client attempting to access recid <record-number> not part of file <file-number>. (438)

Users belonging to that server process are dead and cannot be disconnected using promon

CAUSE:

The underlying cause is 'dirty reads'. Error 438 occurs when a RECID is referenced that no longer exists or belongs in the table you are trying to access. For instance, a program (Program1) tries to find a Customer Record that happens to have RECID 111. Now, program1 has to wait for it because Program2 has it locked. Program2 deletes the Customer Record with RECID 111 and then creates a new Item Record. Progress recycles RECIDs so it re-assigns RECID 111 to the new Item Record. Now, Program2 is done and releases all the
record locks. Now it is time for Program1 to find the record that no longer exists; however, the new Item record does exist with that same RECID. This is when the error 4407 will display since Progress cannot maintain two records with the same RECID.

FIX:

Avoid 'dirty reads'.