Progress 9.1D: Error Message: Client versucht, auf Recid 73324 zuzugreifen... (438)

chk

New Member
Hello,

i am not experienced in developing progress applications. I have to administrate an application that contains 7 services and a gui (based on progress 9.1D).

The application works but i have sometimes (1-2 times a day) error messages in the database logfile.
After such an error it can be that a service or several services are down because the reconnect did not work.:(

Can anybody say to me what is the meaning of the following messages (extract from database logfile). Where can I find a documentation to the error messages? What is the meaning of recId or Datei "NBR" ?

Extract (1st error):

06:04:32 SRV 1: Client versucht, auf Recid 903232 zuzugreifen, diese ist nicht Bestandteil von Datei 26. (438)
06:04:32 SRV 1: Previous message sent on behalf of user 12. (5512)
06:04:32 SRV 1: Client versucht, auf Recid 73324 zuzugreifen, diese ist nicht Bestandteil von Datei 63. (438)
06:04:32 SRV 1: Previous message sent on behalf of user 12. (5512)
06:04:32 SRV 1: SYSTEM ERROR: nsa_deq_pf: suspended message is synchronous
pusr->uc_wait = 0, queued msg code = 45. (2710)
06:04:32 SRV 1: Begin transaction backout. (2252)
06:04:32 SRV 1: Transaction backout completed. (2253)
06:04:32 SRV 1: Logout usernum 23, userid plc_status, on SRV_W. (739)
06:04:32 SRV 1: Begin transaction backout. (2252)
06:04:32 SRV 1: Transaction backout completed. (2253)
06:04:32 SRV 1: Logout usernum 19, userid cranes, on SRV_W. (739)
06:04:32 SRV 1: Logout usernum 12, userid cranes, on . (739)
06:04:32 SRV 1: Logout usernum 15, userid cranes, on . (739)
06:04:32 SRV 1: Stopped. (2520)
06:05:00 SRV 1: Started on port 3002 using TCP, pid 2548. (5646)
06:05:01 SRV 1: Login usernum 23, userid Administrator, on . (742)
06:05:01 SRV 1: Userid ist nun cranes. (708)
06:05:01 SRV 1: Previous message sent on behalf of user 23. (5512)
06:58:27 SRV 1: Login usernum 19, userid SYSTEM, on SRV_W. (742)
06:58:27 SRV 1: Userid is now cranes. (708)
06:58:27 SRV 1: Previous message sent on behalf of user 19. (5512)
06:58:27 SRV 1: Event Logger error: Could not find 'PROMSGS.DLL'. (5194)
06:58:27 SRV 1: Previous message sent on behalf of user 19. (5512)

---

Extract (2nd error):

08:34:28 SRV 4: Client versucht, auf Recid 898766 zuzugreifen, diese ist nicht Bestandteil von Datei 4. (438)
08:34:28 SRV 4: Previous message sent on behalf of user 9. (5512)
08:34:33 BROKER 0: Disconnecting client 9 of dead server 4. (2526)
08:34:33 BROKER 0: Disconnecting client 18 of dead server 4. (2526)
08:34:33 BROKER 0: Disconnecting client 22 of dead server 4. (2526)
08:34:33 BROKER 0: Begin transaction backout. (2252)
08:34:33 BROKER 0: Transaction backout completed. (2253)
08:34:33 BROKER 0: Disconnecting client 24 of dead server 4. (2526)
08:34:33 BROKER 0: Disconnecting dead server 4. (2525)
08:34:49 SRV 4: Started on port 3006 using TCP, pid 176. (5646)
08:34:50 SRV 4: Login usernum 24, userid Administrator, on . (742)
08:34:50 SRV 4: Login usernum 22, userid Administrator, on . (742)
08:34:50 SRV 4: Userid ist nun cranes. (708)
08:34:50 SRV 4: Previous message sent on behalf of user 22. (5512)
08:34:50 SRV 4: Userid ist nun cranes. (708)
08:34:50 SRV 4: Previous message sent on behalf of user 24. (5512)

Thank you for your help

Christian
 
Re: Progress 9.1D: Error Message: Client versucht, auf Recid 73324 zuzugreifen... (43

A RECID is the address of a record inside the database. It consists of a block# and a record# within the block.

You can lookup errors by error number here: http://progress.atgnow.com/esprogress/Group.jsp?bgroup=progress

Error (438) probably means:
A FIND statement retrieved a data record from the database which was from the wrong table. This DOES NOT indicate database corruption. It typically indicates that the wrong RECID was used to find a record, or that a record whose recid was stored in a sort file was deleted and another record was created in another table with the same recid. This message is an awkward way in which PROGRESS deals with an error that is neither a user error nor database corruption, and is non fatal. It means that the FIND failed.

So the code is probably doing something like:
Code:
find customer where ...
recNum = recid( customer ).
...
find customer where recid( customer ) = recNum.
/* error occurs! */

Meanwhile, probably in another session, someone has deleted the customer and created another record in another table that got assigned the same recid. So when the find by recid occurs a record is found but it is from the wrong table :(

A variation on this would involve storing the recid in a databases field and then trying to retrieve it later. This one is especially bad because a dump & load will renumber all of the records.

BTW -- 9.1D is ancient, obsolete and unsupported. You should upgrade. The current release is OpenEdge 10.2B.
 
Re: Progress 9.1D: Error Message: Client versucht, auf Recid 73324 zuzugreifen... (43

Thank you for helping me.

Can I find out the table name where the recid belongs to?

Is it right that this error is a sign that the program has a bug?
Error "Datei 4" occurs very often but I can not see where the recId belongs to?

"Datei 26" and "Datei 63" occurs in the same second and the recid from error "Datei 26" can I see in table that belongs to "Datei 63" and inverse.

I migrate my application from win 2000 to win 2003 (old server to a new server) and now the errors occur more often than before?! Is there a relationship between the migration and the number of errors?
 
Re: Progress 9.1D: Error Message: Client versucht, auf Recid 73324 zuzugreifen... (43

find _file no-lock where _file-num = 4.
display _file-name.

Yes, it is a sign that your program has a bug.

If you moved from the old server to the new server by dumping & loading recids would have changed which would certainly be a potential source of the problem.
 
Re: Progress 9.1D: Error Message: Client versucht, auf Recid 73324 zuzugreifen... (43

The solution you describe is to find the table name if you know the nbr of the file. But for example RecId 73324 is not part of file 63 and so I want to find out where RecId 73324 belongs to.

Perhaps I have found a solution for my problem (BUG-Description Progress):

Title: "Error 438 and 2703 while scrolling in a browse on Windows"
Created: 08/23/2004 Last Modified: 03/04/2010
Status: Verified

Symptoms:
Errors while scrolling in a browse
Client attempting to access recid <record-number> not part of file <file-number>. (438)
SYSTEM ERROR: Locked or open without a cursor: cursid = . (2703)
SYSTEM ERROR: bfsort.c: fatal error <error-number> (491)
SYSTEM ERROR: Memory violation. (49)
Stopped. (2520)
Stack Trace from _mprosrv on Solaris reads:

nsadoix
nsaloop
doserve
Connected to a remote database
On Windows XP machines using the Windows XP Theme other than the Windows Classic Theme


Facts:
Progress 9.1D
Windows NT 32 Intel/Windows 2000
OpenEdge 10.0x

Cause:
Bug# 20040728-004


Fixes:
Upgrade to Progress 9.1E
Upgrade to 10.0B01 or later
As a workaround, use the Windows Classic Theme. This workaround is not valid for Windows 2003 clients.
--------------------------------------------------------------------------------

Since yesterday evening I use Windows Classic Theme and I have no problems. I will observe the logfiles but I hope that this was the solutuion.

After the migration of the server the Clients got a new user profile with the WindowsXP-Theme. I think that before the migration some of the Clients use the Classic Theme. That would explain why the number of errors grow after the migration.

Regards

Christian
 
Re: Progress 9.1D: Error Message: Client versucht, auf Recid 73324 zuzugreifen... (43

You're right. I solved the wrong problem.

To find the table that a RECID belongs to you have to attempt to find it in each possible table by trial and error. This is not a lot of fun. You can do it with dynamic code if you really want to.

But I think you have found your solution.
 
Back
Top