DC001003 with LTXNLOCK description
search cancel

DC001003 with LTXNLOCK description

book

Article ID: 240471

calendar_today

Updated On:

Products

IDMS

Issue/Introduction

This article describes what a DC001003 abend means when the resource is an "LTXNLOCK".

Messages similar to these will appear on the CV joblog and on the dc-log (OLP):

 10.08.38 STC03984  +IDMS DC001007 V2 T2366884 TASK:TASK2 PROG:PROGRAM2 WAITING FOR LTXNLOCK 00000008 01250206
 10.08.38 STC03984  +IDMS DC001008 V2 T2366884 TXNID:1454833456 PROG:PROGRAM2 SUBSCHEMA:EMPSS01 LINE#:7 MODE:X
 10.08.38 STC03984  +IDMS DC001009 V2 T2366884 TSKID:2358596 TASK:TASK1 PROG:PROGRAM1 HOLDS LTXNLOCK 00000008 01250206
 10.08.38 STC03984  +IDMS DC001010 V2 T2366884 TXNID:1454714277 PROG:PROGRAM1 SUBSCHEMA:EMPSS01 MODE:S
 10.08.38 STC03984  +IDMS DC001003 V2 T2366884 TASK:TASK2 PROG:PROGRAM2 STALLED WAITING FOR LTXNLOCK 00000008 01250206
 10.08.38 STC03984  +IDMS DC027007 V2 T2366884 TASK:TASK2 PROG:PROGRAM2 ABENDED WITH CODE D002

Environment

Release : All supported releases.
Component : IDMS/DB

Cause

These messages mean that one task has locked a database record and still holds the lock, while another task wants to lock the record in a conflicting lock mode.

In the above example, the database resource "00000008 01250206" defines the record. This is fully documented in the DC001000 message description. This resource is page group 0, dbkey radix 8, and the dbkey is x'01250206' - or decimal 75,010:6.

Task TASK1 running program PROGRAM1 has a shared lock on this record, and task TASK2 running program PROGRAM2 needs to update the same record and in order to do so, it has to place an exclusive lock on it.

If this situation exists for longer than the INACTIVE INTERVAL (as set either in the SysGen SYSTEM statement or as overridden in the task definition of TASK2), TASK2 is aborted with the DC001003 message.

Note: This is not necessarily a deadlock. A deadlock is when two (or more) tasks have each locked a different resource, and each task needs to place a conflicting lock on the resource that the other has locked.

Resolution

This is not an error in the software. Catching and aborting tasks competing for database resources is done by design so that rogue tasks do not hold up resources indefinitely.

The solution is to analyze the involved application programs, the database record, and the INACTIVE INTERVAL for why this is happening with a view to making changes in order to minimize the incidence of DC001003 abends.

Additional Information

Lock Management
System Generation
Timer related abend detection in IDMS