Root Cause and Solutions to T24 Transact Locking Issues
Locking is a mechanism used in computer programming to prevent multiple threads from accessing a shared resource simultaneously to maintain consistency and avoid data corruption. When a thread acquires a lock, it has exclusive access to the resource, and other threads that attempt to access the resource are blocked until the lock is released.
You can implement locking in various ways, such as using semaphores, mutexes, or monitors. The locking mechanism choice depends on the system's specific requirements and constraints.
Locking can help to prevent race conditions, where multiple threads access a shared resource simultaneously, leading to unpredictable and inconsistent results. Locking can also help ensure that data is updated consistently and predictably, even in concurrent access by multiple threads.
However, locking can also introduce performance overhead and potential deadlocks, where two or more threads are blocked and waiting for each other to release locks, leading to a permanent state of inaction. Therefore, careful design and testing of locking mechanisms are essential to achieve a balanced trade-off between consistency and performance.
Locking in T24 Transact Core Banking
In a T24 environment, users and background jobs frequently update data records stored in relational database systems. To ensure data consistency, T24 locks the data record processes the update, and frees the record again.
The disadvantage of this record-level locking is that it might slow down performance. In the worst case, such locks are not released, and an admin must free up the lock manually.
T24 user-related locks are easy to handle, but the COB or background job-related locks can give your T24 team sleepless nights. Below are a few good practices to avoid severe locking problems.
Root Cause and Solutions to T24 Transact Locking Issues
Stale Locks
If a record is locked by a user/process and the session is abruptly terminated, sometimes stale locks will persist at the DB level or jbase level.
Abrupt termination causes port entries not to get clear. Also, terminating the user sessions with the windows X button is not the right way to log out of the process. This is because JBASE or the underlying runtime does not know the process's status if the corresponding session is used for logging out with the windows X button.
Locks on jBase 5
For monitoring locks, jbase provides a utility called SHOW-ITEM-LOCKS, and you can also see the available locks through the output of "jRLA -dvL."
Locks in R15 in the jobs AC.HVT.MERGE and EOD.MERGE.XREF.ENT.KEY
Please be informed that these two jobs were introduced as new jobs from T24 release R12 where sub-accounts were replaced with HVT processing. The current sub-account functionality that existed until the T24 release R11 has been replaced by HVT functionality. No separate accounts will be maintained as sub-accounts, but the transactions will hit the master account itself. An account is termed as an HVT account when HVT.FLAG is set to YES in the ACCOUNT record.
DUMMY.LOCKS in F.LOCKING
The DUMMY.LOCKS records in F.LOCKING will be created when the field OP.CONSOLE in SPF record is set with ON/PERFORMANCE/TEST for performance monitoring. These records are used by the SEAT mechanism to generate reports.
EB.PHANTOM crashes with the "Timed out waiting for Lock" error
The OFS request through the PHANTOM process is crashing with a "Timed out waiting for lock" error.
Contention/LOCK in TSM when running COB with DB2 database
We could notice that the problem was resolved when JEDI_XMLDRIVER_DISABLE_DATABASE_LOCK=1 was incorporated in .profile
Since this is a DB2 environment, database locks do give contention, and the suggestion is to use either JDLS or OS locking.
Locking issue with poor connection
If you lose your connection, the locked record will not be released/unlocked automatically. We have to open the record manually. This can be done by using the following commands in JBASE.
1. To list the locked records.
jsh--> SHOW-ITEM-LOCKS
2. Manually release the LOCK by using
jsh--> LO PORT.NO"
And a few more
The DB2 exception SQLCODE: -911, SQLSTATE: 40001, SQLERRMC: 68
Start DBMS locking and stop JDLS locking
Concurrent locking errors in jboss
Timed out waiting for lock in IC.COB
Timed out waiting for lock in EOD.BAL.MVMT.BVAL
FX deal lock on MUTUAL.WORKING.DAY
"Unable to lock access to staging tables" issue while running watch-cli batch process
Timed out waiting for lock FBNK.ACCOUNT XXX occurred in Batch BNK/PD.END.OF.DAY for the job PD.EOD.CONTRACT
COB crash "Timed out waiting for lock FBNK.RE.STMT.ENT.KEY.WORK"
Purge entries of F.LOCKING with @ ID like UNIQUE.KEY.<NUMBER>
Reduce the contention of F_LOCKING table in oracle database
Release Lock in ORCL
Keep in mind that locking might have a negative performance impact!
Our team is here to support your troubleshooting and redesign activities. So please don't wait; contact us anytime.
Happy Performance Engineering!