Kbase P156081: WebSpeed agent intermittently stays at busy state when waiting on a record lock on the database
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  17/01/2011 |
|
Status: Verified
SYMPTOM(s):
WebSpeed agent intermittently stays at busy state when waiting on a record lock on the database
The agent never becomes available once it is in busy state
Killing the WebSpeed agent using kill -8 creates a core and protrace file
The stack trace from the core file reads:
utsleep
ncachknet
lkCheckLock
wvLockWait
umLockWait
lkWaitOrContinue
lkBusy
The protrace created from the busy WebSpeed agent does not contain any meaningful information
FACT(s) (Environment):
Only few WebSpeed agents out of 25 stays at busy state for ever
The WebSpeed broker runs 24/7 unless there are any application updates needs to be performed
4GL trace on the agent reveals the last internal procedure it ran before the agent became busy
The internal procedure found to have a unnecessary EXCLUSIVE-LOCK on the shopping cart application
IBM AIX 5.3 64-bit
WebSpeed 3.1E 64-bit
CAUSE:
The is a WebSpeed application bug where the busy or hung agent is executing a query on the database, which got a record lock, and it is waiting for the lock to be granted. Replacing the EXCLUSIVE-LOCK to NO-LOCK resolved the hung agent issue.
FIX:
Use 4GLTrace on the WebSpeed agent to find out the internal procedure/function the agent ran before it became hung. Then, review the code on the internal procedure or function to isolate the lock conditions on the database query. Replace unnecessary EXCLUSIVE-LOCK on the query to resolve lock contention. Try to use pessimistic locking to reduce locking contention on the multi user application.