db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kathey Marsden (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (DERBY-2877) Print the entire lock list when a deadlock occurs and deadlock tracing is on
Date Wed, 23 Mar 2011 16:27:05 GMT

    [ https://issues.apache.org/jira/browse/DERBY-2877?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13010202#comment-13010202

Kathey Marsden commented on DERBY-2877:

I had always seen this issue as a diagnostic improvement to help users track down deadlocks
in their applications rather than a diagnostic to track down Derby bugs.  I thought about
closing this after Lily added extended diagnostics with DERBY-4856 where derby.stream.error.extendedDiagSeverityLevel
can be modified to do a thread dump on deadlock, but I decided that DERBY-2877 would still
be useful because it would restrict the thread dump print to just the threads involved in
the deadlock. But maybe I am misunderstanding this issue.

> Print the entire lock list when a deadlock occurs and deadlock tracing is on
> ----------------------------------------------------------------------------
>                 Key: DERBY-2877
>                 URL: https://issues.apache.org/jira/browse/DERBY-2877
>             Project: Derby
>          Issue Type: Improvement
>          Components: Services
>    Affects Versions:
>            Reporter: John H. Embretsen
> When a deadlock occurs, derby includes the cycle of locks which caused the deadlock in
the SQLException message. This is also printed to derby.log if the properties derby.locks.deadlockTrace
and derby.locks.monitor are set to true, or if debug code is being used (e.g. jars from lib-debug
distributions). It will be easier to debug deadlocks if the entire lock table is printed to
derby.log as well (alternatively to both derby.log and the exception message) in these cases.
An example of such a lock table is available at http://wiki.apache.org/db-derby/LockDebugging.
> For example, in a long-running test I have observed deadlocks with lock cycle messages
such as:
> Lock : ROW, DELETED, (2,1)
>   Waiting XID : {6241401573, S} , U1, DELETE FROM "U1"."DELETED" WHERE CURRENT OF "SQL_CURLH000C9"
>   Granted XID : {6241401662, S} 
> Lock : ROW, DELETED, (3,3523)
>   Waiting XID : {6241401662, U} , U1, SELECT ITEMID FROM DELETED
>   Granted XID : {6241401573, U} 
> . The selected victim is XID : 6241401573.
> It is not clear from this output why XID 6241401573 is waiting for a shared lock (S)
on row (2,1), as an S lock is compatible with other S locks [1]. 
> Having a snapshot of the contents of the lock table at the time of the deadlock would
probably help a great deal in the debugging process. 
> [1]: Lock compatibility: http://db.apache.org/derby/docs/dev/devguide/rdevconcepts2462.html

This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

View raw message