APAR status
Closed as program error.
Error description
Original Custoemr scenario: ****************************************** **************** We currently execute multiple Introspection processes on multiple servers for the same LCA environment. It appears that a db2 deadlock occurs when one Introspection process locks up rows in the ENOVFIQ thru a Select and another introspection job attempts to update the same rows to identify them as being processed. Here is the Select SQL, from the first Introspection process : SELECT "OID", "TYPE", "DATADOMAIN", "MIMETYPE", "REQSERIAL", "REQTYPE", "VAULTNAME", "VAULTDOC", "VUSER" , "VORGANIZATION", "FORMAT", "PROCID", "PROCTYPE", "SUBMISSION" FROM "ENOADM"."ENOVFIQ" WHERE "STATUS"='T' AND "PROCID" IS NULL AND "VAULTNAME"='ENOVIAVaultServer' ORDER BY "REQSERIAL" ASC FETCH FIRST 15 ROWS ONLY FOR UPDATE Here is the Update SQL from the second Intropsection process : UPDATE "ENOADM"."ENOVFIQ" SET "PROCID" = ? WHERE "REQSERIAL"=? AND "OID"=? AND "TYPE"=? AND "DATADOMAIN"=? AND "REQTYPE"=? "TYPE"=? AND "DATADOMAIN"=? AND "REQTYPE"=? Right now the deadlock check time is set to 10,000 ms or 10 seconds. DB2 will wait 10 seconds for the deadlock to clear up and then the transaction will fail. Followup information at FE's request: 1. How often does this problem occur? 1) on average about 10 times per day. 2. Can you recreate this problem in the test environment? 2) I do not know if it can be recreated in the test env. You might possibly recreate the lock problem, by establishing about 20 Introspection jobs and randomly submit about 20,000 entries into the queue spread out over a 12 hour period. You should lock only the row that will be upated. Additional information: ENOVFIQ is the Introspection Query table. When a row in the table is selected, the row is locked so we can update the Process ID. That is a good thing. We should update the Process ID as soon as the process information is obtained. This information is necessary to update the row later with information after the Introspection job relating to the row is completed. The problem is we do not commit the row after obtaining the Process ID. This ultimately creates a table lock. When we have many application servers running introspection this is a major problem and causes time-puts. .
Local fix
Problem summary
Multiple Introspection processes are causing DB2 deadlocks on E NOVFIQ table Original Custoemr scenario: ****************************************** **************** We currently execute multiple Introspection processes on multiple servers for the same LCA environment. It appears that a db2 deadlock occurs when one Introspection process locks up rows in the ENOVFIQ thru a Select and another introspection job attempts to update the same rows to identify them as being processed. Here is the Select SQL, from the first Introspection process : SELECT "OID", "TYPE", "DATADOMAIN", "MIMETYPE", "REQSERIAL", "REQTYPE", "VAULTNAME", "VAULTDOC", "VUSER" , "VORGANIZATION", "FORMAT", "PROCID", "PROCTYPE", "SUBMISSION" FROM "ENOADM"."ENOVFIQ" WHERE "STATUS"='T' AND "PROCID" IS NULL AND "VAULTNAME"='ENOVIAVaultServer' ORDER BY "REQSERIAL" ASC FETCH FIRST 15 ROWS ONLY FOR UPDATE Here is the Update SQL from the second Intropsection process : UPDATE "ENOADM"."ENOVFIQ" SET "PROCID" = ? WHERE "REQSERIAL"=? AND "OID"=? AND "TYPE"=? AND "DATADOMAIN"=? AND "REQTYPE"=? "TYPE"=? AND "DATADOMAIN"=? AND "REQTYPE"=? Right now the deadlock check time is set to 10,000 ms or 10 seconds. DB2 will wait 10 seconds for the deadlock to clear up and then the transaction will fail. Followup information at FE's request: 1. How often does this problem occur? 1) on average about 10 times per day. 2. Can you recreate this problem in the test environment? 2) I do not know if it can be recreated in the test env. You might possibly recreate the lock problem, by establishing about 20 Introspection jobs and randomly submit about 20,000 entries into the queue spread out over a 12 hour period. You should lock only the row that will be upated. Additional information: ENOVFIQ is the Introspection Query table. When a row in the table is selected, the row is locked so we can update the Process ID. That is a good thing. We should update the Process ID as soon as the process information is obtained. This information is necessary to update the row later with information after the Introspection job relating to the row is completed. The problem is we do not commit the row after obtaining the Process ID. This ultimately creates a table lock. When we have many application servers running introspection this is a major problem and causes time-puts. .
Problem conclusion
THIS PROBLEM WILL BE FIXED ON ENOVIA VERSION 5 RELEASE 19 GA level. NOTE THAT THIS PROBLEM WILL ALSO BE FIXED ON V5R18SP03. .
Temporary fix
Comments
APAR Information
APAR number
HD69058
Reported component name
ENOVIA LCA NT>X
Reported component ID
569151700
Reported release
517
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt
Submitted date
2007-11-08
Closed date
2007-12-18
Last modified date
2008-01-25
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
Fix information
Fixed component name
ENOVIA LCA NT>X
Fixed component ID
569151700
Applicable component levels
R518 PSN SP51803
UP08/01/25 I 1000
[{"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Product":{"code":"SSDJRN","label":"ENOVIA LCA"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"517","Edition":"","Line of Business":{"code":"","label":""}}]
Document Information
Modified date:
25 January 2008