Kbase P108791: Error 1422 trying to update a record using OpenEdge 10.0A or Progress 9.1C to 9.1E
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  15/04/2008 |
|
Status: Unverified
FACT(s) (Environment):
Progress 9.1C
Progress 9.1D
Progress 9.1E
OpenEdge 10.0A
SYMPTOM(s):
Error 1422 trying to update a record
SYSTEM ERROR: Index in for recid could not be deleted. (1422)
Using -lbimod is set to 2
The record has been updated in a sub-sub-transaction (level 3 of transaction)
A sub-transaction (level 2) rollback tried to restore the original content of the record
The main transaction is committed
If the main transaction is rolled back the problem does not occur
If the UNDO level-2 from the level-3 the problem does not occur
Error 1422 happens in the next attempt to update the record
Happens to any 4GL client including DataServers
CAUSE:
Bug# 20041125-002
CAUSE:
There is a database corruption cause by the 4GL core client when handling specifics logic with embedded transactions.
When code that contains embedded transactions of at least 3 levels -- 1 for the database non-lbi, and at least 2 within the lbi level -- updated a record in a sub-sub-transaction (level 3 of transaction) and the sub-transaction (level 2) rollback tries to restore the original content of the record, causing an inconsistency in the records that have wanted old values in some fields and bad new values failed to be roll back in some other fields. When index keys that were are correctly rolled back gets out of synch with their related fields and the database record becomes corrupted.
FIX:
Choose one of the following:
1) Upgrade to Progress 9.1E01 or later.
2) Upgrade to OpenEdge 10.0B02 or later.
3) As a workaround, use startup parameter -lbimod 0 for the client sessions.
This parameter should be used for ALL types of clients (GUI Client, TTY clients, batch jobs, AppServer, WebSpeed...) if the same offending Logic procedures are used.