You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Brett Bergquist (JIRA)" <ji...@apache.org> on 2016/03/29 13:04:25 UTC
[jira] [Created] (DERBY-6879) Engine deadlock between XA timeout
handling and cleanupOnError
Brett Bergquist created DERBY-6879:
--------------------------------------
Summary: Engine deadlock between XA timeout handling and cleanupOnError
Key: DERBY-6879
URL: https://issues.apache.org/jira/browse/DERBY-6879
Project: Derby
Issue Type: Bug
Components: Services
Affects Versions: 10.10.2.0
Environment: Solaris 10.5 on Oracle M5000
Reporter: Brett Bergquist
Deadlock between XA timer cleanup task and the ContextManager.cleanupOnError
Found one Java-level deadlock:
=============================
"DRDAConnThread_34":
waiting to lock monitor 0x0000000104b14d18 (object 0xfffffffd9090f058, a org.apache.derby.jdbc.XATransactionState),
which is held by "Timer-0"
"Timer-0":
waiting to lock monitor 0x00000001038b96e8 (object 0xfffffffd9090d8b0, a org.apache.derby.impl.jdbc.EmbedConnection40),
which is held by "DRDAConnThread_34"
Java stack information for the threads listed above:
===================================================
"DRDAConnThread_34":
at org.apache.derby.jdbc.XATransactionState.cleanupOnError(Unknown Source)
- waiting to lock <0xfffffffd9090f058> (a org.apache.derby.jdbc.XATransactionState)
at org.apache.derby.iapi.services.context.ContextManager.cleanupOnError(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionResourceImpl.cleanupOnError(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown Source)
- locked <0xfffffffd9090d8b0> (a org.apache.derby.impl.jdbc.EmbedConnection40)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement.execute(Unknown Source)
at org.apache.derby.iapi.jdbc.BrokeredPreparedStatement.execute(Unknown Source)
at org.apache.derby.impl.drda.DRDAStatement.execute(Unknown Source)
at org.apache.derby.impl.drda.DRDAConnThread.parseEXCSQLSTTobjects(Unknown Source)
at org.apache.derby.impl.drda.DRDAConnThread.parseEXCSQLSTT(Unknown Source)
at org.apache.derby.impl.drda.DRDAConnThread.processCommands(Unknown Source)
at org.apache.derby.impl.drda.DRDAConnThread.run(Unknown Source)
"Timer-0":
at org.apache.derby.impl.jdbc.EmbedConnection.xa_rollback(Unknown Source)
- waiting to lock <0xfffffffd9090d8b0> (a org.apache.derby.impl.jdbc.EmbedConnection40)
at org.apache.derby.jdbc.XATransactionState.cancel(Unknown Source)
- locked <0xfffffffd9090f058> (a org.apache.derby.jdbc.XATransactionState)
at org.apache.derby.jdbc.XATransactionState$CancelXATransactionTask.run(Unknown Source)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)
Found 1 deadlock.
This deadlock caused Derby to create 18000 transaction recovery logs because of the XA transaction that did not cleanup in the timeout. Rebooting the system would cause a 50 hour boot up time to process the transaction logs so recovery had to be done by going to a backup database before the issue occurred.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)