Salesforce

User process bound to UNIX init process is locking a record and cannot be released

« Go Back

Information

 
TitleUser process bound to UNIX init process is locking a record and cannot be released
URL Name000025819
Article Number000126068
EnvironmentProduct: OpenEdge
Version: 10.x, 11.x
OS: UNIX
Other: RDBMS
Question/Problem Description
User process bound to UNIX init process is locking a record and cannot be released

User is holding a record lock in the database.  
Other users cannot access this record because it is locked.

User process was a telnet client that was connected shared memory to the database.
The client lost its telnet session.
Record remains locked by this user session.

The client process has a Parent Process ID of 1 which means that it is bound to the INIT process.

Attempt to disconnect the process via PROMON shows disconnect initiated for process.
Userid no longer appears in the PROSHUT list after it was disconnected.

No other signals or response from the process in question are being seen in the database log file.
Process is not responding to any signals on an OS level either (SIGHUP, SIGINT, SIGTERM, SIGQUIT).

Kill -9 (SIGKILL) against this shared memory connected client process will very likely result in the database performing an Abnormal Shutdown.
 
Steps to Reproduce
Clarifying Information
Process shows in PROMON > R&D > 1. Status > 4. Processes/Clients > 4. Local Clients
Error Message
Defect Number
Enhancement Number
Cause
The process is no longer responding to signals from Progress or the Operating System.  The process may be in some kernel level call or operation and is no longer able or available to process signals being received.
 
Resolution
To resolve a record lock issue when user is no longer connected to the database:

0. Disconnect all current users

Optionally and preferably disconnect all current client processes before shutting down the database. This allows users with running transactions to either commit or rollback before shutting down the database. The following Article provides ABL code to run the 'proshut -C disconnect' os-command:
1. Shutdown the database.
 
$  proshut dbname -by -shutdownTimeout 5m
 
This will result in all remaining client processes being disconnected from the database and subsequently all locks or resources in use will be released.

2. Before restarting the database

Ensure the process is no longer holding semaphores and shared memory segments for the user session. Refer to one of the following articles: 
 
Workaround
Notes
Keyword Phrase
Last Modified Date8/31/2022 11:39 AM

Powered by