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

Knut Anders Hatlen commented on DERBY-2877:
-------------------------------------------

I looks to me that the deadlock in John's example is caused by an index split 
deadlock like the one reported in DERBY-2991, only that it involves more 
transaction and therefore is detected as a deadlock, not as a timeout. There is 
probably an index split waiting for an X lock on (2,1), and that's what 
preventing the delete transaction from obtaining a shared lock. Perhaps we 
would get enough debugging information if we printed all waiters for the locks 
in the cycle.

> 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: 10.2.2.0
>            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.
-
You can reply to this email to add a comment to the issue online.

Reply via email to