db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jørgen Løland (JIRA) <j...@apache.org>
Subject [jira] Updated: (DERBY-3472) Replication: Thread deadlock when deleting many records.
Date Wed, 27 Feb 2008 12:41:51 GMT

     [ https://issues.apache.org/jira/browse/DERBY-3472?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Jørgen Løland updated DERBY-3472:
---------------------------------

    Attachment: derby-3472-1a.diff
                derby-3472-1a.stat

The deadlock appears because mf.workToDo is called while holding the listLatch in ReplicationLogBuffer.
Patch v1a moves the mf.workToDo call outside the synchronized block. 

Running tests.

> Replication: Thread deadlock when deleting many records.
> --------------------------------------------------------
>
>                 Key: DERBY-3472
>                 URL: https://issues.apache.org/jira/browse/DERBY-3472
>             Project: Derby
>          Issue Type: Bug
>          Components: Replication
>    Affects Versions: 10.4.0.0
>         Environment: Derby trunk revision 631534 + DERBY 3205 patch failover-slave-2a.
>            Reporter: Øystein Grøvlen
>            Assignee: Jørgen Løland
>         Attachments: derby-3472-1a.diff, derby-3472-1a.stat
>
>
> When I tried to delete ca 280000 records from a table while replication was running,
the statement never completed.
> VisualVM reports a deadlock:
> Found one Java-level deadlock:
> =============================
> "Thread-2":
>   waiting to lock monitor 0x08164e4c (object 0xfa9db5f8, a java.lang.Object),
>   which is held by "main"
> "main":
>   waiting to lock monitor 0x08164d20 (object 0xfa9db608, a org.apache.derby.impl.services.replication.master.AsynchronousLogShipper),
>   which is held by "Thread-2"
> Java stack information for the threads listed above:
> ===================================================
> "Thread-2":
> 	at org.apache.derby.impl.services.replication.buffer.ReplicationLogBuffer.next(ReplicationLogBuffer.java:182)
> 	- waiting to lock 0xfa9db5f8> (a java.lang.Object)
> 	at org.apache.derby.impl.services.replication.master.AsynchronousLogShipper.shipALogChunk(AsynchronousLogShipper.java:218)
> 	- locked 0xfa9db608> (a org.apache.derby.impl.services.replication.master.AsynchronousLogShipper)
> 	at org.apache.derby.impl.services.replication.master.AsynchronousLogShipper.run(AsynchronousLogShipper.java:169)
> "main":
> 	at org.apache.derby.impl.services.replication.master.AsynchronousLogShipper.workToDo(AsynchronousLogShipper.java:336)
> 	- waiting to lock 0xfa9db608> (a org.apache.derby.impl.services.replication.master.AsynchronousLogShipper)
> 	at org.apache.derby.impl.services.replication.master.MasterController.workToDo(MasterController.java:472)
> 	at org.apache.derby.impl.services.replication.buffer.ReplicationLogBuffer.switchDirtyBuffer(ReplicationLogBuffer.java:322)
> 	at org.apache.derby.impl.services.replication.buffer.ReplicationLogBuffer.appendLog(ReplicationLogBuffer.java:148)
> 	- locked 0xfa9db5f8> (a java.lang.Object)
> 	at org.apache.derby.impl.services.replication.master.MasterController.appendLog(MasterController.java:328)
> 	at org.apache.derby.impl.store.raw.log.LogAccessFile.writeToLog(LogAccessFile.java:787)
> 	- locked 0xbb041788> (a org.apache.derby.impl.io.DirRandomAccessFile4)
> 	at org.apache.derby.impl.store.raw.log.LogAccessFile.flushDirtyBuffers(LogAccessFile.java:534)
> 	at org.apache.derby.impl.store.raw.log.LogAccessFile.switchLogBuffer(LogAccessFile.java:611)
> 	- locked 0xbb041618> (a org.apache.derby.impl.store.raw.log.LogAccessFile)
> 	at org.apache.derby.impl.store.raw.log.LogAccessFile.reserveSpaceForChecksum(LogAccessFile.java:855)
> 	at org.apache.derby.impl.store.raw.log.LogToFile.appendLogRecord(LogToFile.java:3737)
> 	- locked 0xbb041528> (a org.apache.derby.impl.store.raw.log.LogToFile)
> 	at org.apache.derby.impl.store.raw.log.FileLogger.logAndDo(FileLogger.java:370)
> 	- locked 0xfab06ec8> (a org.apache.derby.impl.store.raw.log.FileLogger)
> 	at org.apache.derby.impl.store.raw.xact.Xact.logAndDo(Xact.java:1193)
> 	at org.apache.derby.impl.store.raw.data.LoggableActions.doAction(LoggableActions.java:221)
> 	at org.apache.derby.impl.store.raw.data.LoggableActions.actionDelete(LoggableActions.java:64)
> 	at org.apache.derby.impl.store.raw.data.BasePage.deleteAtSlot(BasePage.java:1149)
> 	at org.apache.derby.impl.store.access.btree.BTreeScan.delete(BTreeScan.java:1386)
> 	at org.apache.derby.impl.sql.execute.IndexChanger.doDelete(IndexChanger.java:369)
> 	at org.apache.derby.impl.sql.execute.IndexChanger.delete(IndexChanger.java:544)
> 	at org.apache.derby.impl.sql.execute.IndexSetChanger.delete(IndexSetChanger.java:250)
> 	at org.apache.derby.impl.sql.execute.RowChangerImpl.deleteRow(RowChangerImpl.java:476)
> 	at org.apache.derby.impl.sql.execute.DeleteResultSet.collectAffectedRows(DeleteResultSet.java:405)
> 	at org.apache.derby.impl.sql.execute.DeleteResultSet.open(DeleteResultSet.java:137)
> 	at org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:372)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1234)
> 	- locked 0xfab36948> (a org.apache.derby.impl.jdbc.EmbedConnection40)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:624)
> 	- locked 0xfab36948> (a org.apache.derby.impl.jdbc.EmbedConnection40)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:556)
> 	at org.apache.derby.impl.tools.ij.ij.executeImmediate(ij.java:330)
> 	at org.apache.derby.impl.tools.ij.utilMain.doCatch(utilMain.java:508)
> 	at org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(utilMain.java:350)
> 	at org.apache.derby.impl.tools.ij.utilMain.go(utilMain.java:248)
> 	at org.apache.derby.impl.tools.ij.Main.go(Main.java:215)
> 	at org.apache.derby.impl.tools.ij.Main.mainCore(Main.java:181)
> 	at org.apache.derby.impl.tools.ij.Main.main(Main.java:73)
> 	at org.apache.derby.tools.ij.main(ij.java:59)
> Found 1 deadlock.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message