[ https://issues.apache.org/jira/browse/DERBY-3980?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Kathey Marsden updated DERBY-3980: ---------------------------------- Attachment: TryTimeout2.java Here is the updated program in case someone is interested, TryTimeout2.java . Changes from TryTimeout.java are 1) Second thread sleeps for 10 second after select. 2) Only has one row in the table. 3) Does delete instead of update. 4) Starts a thread that shows a lock table dump every 10 seconds. 5) This one fails sometimes with deadlock and sometimes with lock timeout. > Conflicting select then update with REPEATABLE_READ gives lock timeout instead of deadlock > ------------------------------------------------------------------------------------------ > > Key: DERBY-3980 > URL: https://issues.apache.org/jira/browse/DERBY-3980 > Project: Derby > Issue Type: Bug > Components: Store > Affects Versions: 10.1.3.1, 10.2.2.0, 10.3.3.0, 10.4.2.0, 10.5.0.0 > Reporter: Kathey Marsden > Attachments: derby.log, derby.log.10_1, javacore.20081209.092827.9800.txt, TryTimeout.java, TryTimeout2.java > > > The attached program TryTimeout.java should detect a deadlock but instead throws a lock timeout exception. The program has two threads that attempt: > > threadConnection.setAutoCommit(false); > /* set isolation level to repeatable read */ > threadConnection.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ); > > ResultSet rs = stmt.executeQuery("select * from t where i = 456"); > while (rs.next()); > stmt.executeUpdate("update t set i = 456 where i = 456"); > threadConnection.commit(); > This gives SQLState 40001 (deadlock) with DB2 but a lock timeout with Derby. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.