[email protected] (Dag H. Wanvik) writes: > T K <[email protected]> writes: > >> Derby 10.3 >> >> Caused by: java.sql.SQLTransactionRollbackException: A lock could not be >> obtained due to a deadlock, cycle of locks and waiters is: >> Lock : ROW, SOMETABLE, (217,6) >> Waiting XID : {216333, S} , SOMESCHEMA, select something from SOMETABLE >> where somethingElse = ? >> Granted XID : {216146, X} >> Lock : ROW, SOMETABLE, (4,1) >> Waiting XID : {216146, S} , SOMESCHEMA, update SOMETABLE set something = >> ? where somethingElse = ? >> Granted XID : {216190, S} , {216333, S} >> . The selected victim is XID : 216333. > > Hmm, it looks as if transaction 216146 is asking for a shared lock on (4,1), > and > there are only shared locks on that row apparently, so I can't see why > that should not be granted, weird. Could this be an error, I wonder?
There may be another transaction waiting for an exclusive lock on that row, and then no new shared locks are granted on that row until the exclusive lock has been granted and released. There is a problem with the error reporting in such a case, see this JIRA report: https://issues.apache.org/jira/browse/DERBY-2877 -- Knut Anders
