I am troubleshooting a derby deadlock and need help. (setup - -Derby 10.7.1 + 
in-memory DB  + Hibernate 3.6.9 + spring 3.0.3)

Inside a transaction, I execute delete on a specific instance of an entity that 
has a 1-* relationship with another entity. This results in an update SQL that 
tries to break that relationship. So basically, something like this…

Update A.col1=null, A.col2=null from A where A.col3 = ?

Even, though col3 has a non-unique index on it, this results in an escalated 
table lock (verified it by querying the SYSCS_DIAG.LOCK_TABLE). Why a table 
lock? I verified this behavior on an oracle system and it just creates a row 
lock. I tried tuning different parameters such as the 
"derby.locks.escalationThreshold", but it did not help. Further down the logic, 
I have to start a new nested transaction (for complicated reasons….I will leave 
out the details) that tries to read a different entity from the same table and 
it gets blocked.

We have also tried upgrading to the latest 10.8 version as well as switched 
from in-memory to file based DB but it didn't help.

Any insight is appreciated…
Jasmeet Bhatia

Reply via email to