Btrieve Error 080 on Order Header File
This has been happening for the last 30 days off and on. What might cause this to happen?
A - This is what Btrieve Error 80 means based on PSQL documentation:
80: Btrieve encountered a record-level conflict.
Btrieve did not perform the Update or Delete operation
because of a record-level conflict. For example, station
A reads a record, station B reads the same record and
updates it, and then station A attempts to update the
record. The application should reread the record prior to
resending an Update or Delete operation. Alternatively,
the application can employ record locks to avoid conflicts.
Since you are receiving this error message when Defer Processing is running at night, it is unlikely another process is competing on the same record with Defer Processing. Based on our past experience, the likely reason is because you have two Defer Processing tasks running at the same time.
Running Multiple Defer Processing Tasks at The Same Time
Elliott does not prevent two Defer Processing tasks from running at the same time. There is a valid cause for this kind of scenario to speed up the Defer Processing. In that case, you need to be very careful by specifying which defer batch will run for different defer processing tasks, so two defer processing tasks do not compete on the same defer queue. For example, you segregate your defer list into two different queues by using batch code BATCH-1 and BATCH-2. One defer task runs BATCH-1, and one defer task runs BATCH-2. This way, two defer tasks do not compete with one another. If you fail to do so, and two defer tasks are running on the same queue, this will likely cause the problem. Btrieve Error 80 is one kind of message that may show up in that case.
How can you tell if you have two defer processing tasks running at the same time?
First of all, you can just go to all the desktops and make sure there's only one defer processing task running in your whole organization.
If this is not practical due to the fact that you are working remotely or if you don't have access to all the desktops in the office, you could go to the Elliott Server's Console (the PSQL server), and bring up Server Manager by right clicking on "My Computer" and choosing "Manage." Then go to Roles -> File Services -> Share and Storage Management, and choose "Manage Open Files..." Be aware that the above procedure applies to the Windows 2008 Server. For a different server OS, the procedure may be different to bring up the "Manage Open Files..." window.
In the "Manage Open Files" window, scroll to the folder where you have Elliott installed. For Elliott V7, find the EL700DP.EXE in the Elliott root folder. For Elliott V8, find the EL800DP.EXE in the Elliott Bin folder. See sample screen below:
In the above example, you can see that EL700DP.EXE is being referenced twice by user ADMIN. EL700DP.EXE is the V7 Elliott Defer Processing executable. This implies there are two copies of Elliott Defer Processing running, which can cause the Btrieve Error 80.
To find out which machines the two copies of Defer Processing are running on, you can go to Share and Storage Management and choose "Manage Sessions...". The following sample screen will show up:
As shown in this sample screen, you can see that the user ADMIN is running from two computers. Go to the machine that should not be running the Defer Processing task and close it accordingly.