NAT3199 - Inconsistency in the Inverted List
Last update: 1 June 2005
ADABAS Response 199 or Natural message NAT3199
Paul Sowash reported that his program received the following error, which is running under ADA713 and NAT316:
pgmx 1120 NAT3199 Inconsistency in inverted list index. DB/FNR x/yy.
1110 FIND VENDOR WITH VNUMBER-PFIX = '*'
1130 END TRANSACTION
Reason for the code:
During an update operation, an inconsistency was found in the inverted list index. The leftmost two bytes of additon 2 of the Adabas control block (CB-ADD2) may contain the descriptor name.
As responded by Ki Weingart and discussed on SAG-L since 1996 (see Adabas response code 199),
some customers ran into this problem before. See SAG-L, please click.
"The 199 is a self-correcting response code. What happens is that the index (NI) and DATA do not match. Sometimes the index exists but points to a record that does not exist in DATA. ADABAS then issues a response code 199 and deletes the index record thereby rectifying itself. If the DATA record exists but not the index, then ADABAS adds the index and issues a 199."
Jim Poole responded 1999 when I (Dieter Storr) reported a response code 199 and pointed out that ADAICK did not find any error. I restarted the job and it processed the relevant ISN and abended (NAT3199) with another ISN. In this case, I released the descriptor, which caused the error. This happened under ADA527 and ADA622.
"We had a long history of corruption errors (for bad habits not to be published). ADAVAL is a far more robust utility for determining them (checks DS record content against index content) versus ADAICK (checks structure of pointers, lengths, etc).
A rsp. 199 on an update command is a self-correcting response code, the update found an error, backed out the update using the contents of DS (problem fixed, on to the next bad record). You can actually use this technique to fixe isolated errors verus Unload/Load or Release/Invert."
Fix for ADA623 - ADARSP199 for update cmd
An Adabas update/delete command (A1/A4/E1) receives Adabas rsp code 199.
- Check the additions 2 field (ADD2) of the Adabas control block. The
leftmost 2 bytes of ADD2 should contain the descriptor field name which
was detected to be inconsistent.
- Run utility ADAVAL VALIDATE to check the DE-values in the normal index
against the DATA records.
Note: Although the actual update command is not completed (back out),
the Adabas nucleus
corrects the inconsistent DE-value in the NI automatically by adding the
missing DE-value into the index. Therefore the next update command on the
same ISN will not receive the rsp-199 again. However, the incorrect DE-
value encountered remains in the index and is detected by utility ADAVAL.
- If ADA621 is installed: Apply zap AN21041 and re-start Adabas nucleus
- Delete the descriptor reported in the ADD2 field (ADADBS RELEASE) and
recreate the descriptor using utility ADAINV.
- If the 'problem' descriptor is unknown:
- Unload the Adabas file with utility ADAULD
- Delete the file with ADADBS DELETE
- Re-load the file using ADALOD LOAD and provide input from step a)
Early Warning - ADA742-004:
Apply zaps AN742302 and AU742132 / Use V743 ADALCO
Problem-No : 263886 INDEX INCONSISTENCY, RSP-175/-199
Given a particular distribution of descriptor values and ISN lists over multiple INDEX blocks, a specific INDEX update could introduce a rule violation in the INDEX structure. This rule violation alone would not cause any noticable errors, but a further certain sequence of updates might make the INDEX inconsistent and cause errors.
Possible error symptoms were:
This error was rare and involved the occurrence of all of the following elements:
- A descriptor value present in the INDEX might not be found in a direct search for this value.
- Response code 199 could occur on an attempt to delete a descriptor value/ISN from the INDEX.
- Response code 113 or 175 could occur when reading
records via the INDEX.
- ADAICK ICHECK reported ERROR-125, MI/NI ISNS DO
- ADAVAL reported mismatches between the INDEX and
SAG recommend to check the INDEX of your database with the checkutility ADAICK (zap AU742132 applied). In case of inconsistencies these have to be corrected by either reinverting the descriptor (ADAINV or online invert) or unload and reload the file (ADAULD/ADALOD).
- Many DATA storage records containing the same
- The ISN list for this descriptor value spreading
over more than two NORMAL INDEX blocks and more
than one MAIN INDEX block.
- Batches of updates involving this descriptor
value where by groups of ISNS were repeatedly
inserted and removed from the INDEX.
Note: The corrections are only valid for Adabas Version 7.4.2.
Early Warning - ADA743-001:
Apply zaps AN743078 and AU743042
Problem-No : 264110 INDEX INCONSISTENCY, RSP-175/-199
Same description as "Early Warning - ADA742-004."
For ADAICK: zap AU743042 applied.
Comments from Dieter Storr:
I am wondering whether Adabas version 8 will solve the problem.