Deadlock running concurrent ALTER TABLE commands
------------------------------------------------

                 Key: DERBY-5296
                 URL: https://issues.apache.org/jira/browse/DERBY-5296
             Project: Derby
          Issue Type: Bug
    Affects Versions: 10.8.1.2
            Reporter: Adam Heath


==
     [java] 2011-06-25 20:57:59,232 (entity-datasource(localderby)-1) [       
DatabaseUtil.java:2383:ERROR] SQL Exception while executing the following:
     [java] ALTER TABLE OFBIZ.COMMUNICATION_EVENT_TYPE ADD CONSTRAINT 
COM_EVNT_TYPE_PAR FOREIGN KEY (PARENT_TYPE_ID) REFERENCES 
OFBIZ.COMMUNICATION_EVENT_TYPE (COMMUNICATION_EVENT_TYPE_ID)
     [java] Error was: java.sql.SQLTransactionRollbackException: A lock could 
not be obtained due to a deadlock, cycle of locks and waiters is:
     [java] Lock : ROW, SYSCONSTRAINTS, (3,27)
     [java]   Waiting XID : {12420, X} , OFBIZ, ALTER TABLE 
OFBIZ.COMMUNICATION_EVENT_TYPE ADD CONSTRAINT COM_EVNT_TYPE_PAR FOREIGN KEY 
(PARENT_TYPE_ID) REFERENCES OFBIZ.COMMUNICATION_EVENT_TYPE 
(COMMUNICATION_EVENT_TYPE_ID)
     [java]   Granted XID : {12418, S}
     [java] Lock : ROW, SYSCONGLOMERATES, (297,11)
     [java]   Waiting XID : {12418, S} , OFBIZ, ALTER TABLE 
OFBIZ.COMMUNICATION_EVENT ADD CONSTRAINT COM_EVNT_RESENUM FOREIGN KEY 
(REASON_ENUM_ID) REFERENCES OFBIZ.ENUMERATION (ENUM_ID)
     [java]   Granted XID : {12420, X}
     [java] . The selected victim is XID : 12420. 

==

I was adding thread-pool based start-of-day support to ofbiz(ofbiz.apache.org), 
so that CREATE TABLE, CREATE INDEX, kinda stuff could run in parallel.  
However, foreign key stuff in derby deadlocks.

The above paste shows two alter table commands.  Both the primary parent table 
and the second child table do not overlap.  There should be no reason for these 
to deadlock at all.

Shouldn't derby be finding out all the locks it needs to take, doing an alpha 
sort(or any kind of stable sort), then locking in that order?  This is a 
classic deadlock issue(based on the book Java Concurrency in Practice).

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

        

Reply via email to