You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-user@db.apache.org by Hong Ji <ho...@gmail.com> on 2012/11/04 14:16:45 UTC

Locking Error When Dropping a Table

When dropping a table, I keep getting the exception 40XL1 (A lock could not
be obtained within the time requested). The Derby build is 10.9.1.0. I
traced into the source code and it timed out when waiting for a lock,  even
when the DROP TABLE transaction is the only running transaction.

The problem doesn't always happen. But once it happens, the table just
cannot be dropped with the 40XL1 exception.

Following are the stack traces from locally built and the released
derby.jar files:

With locally built derby.jar file:

java.sql.SQLTransactionRollbackException: 40XL1
    at
org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(SQLExceptionFactory40.java:89)
    at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Util.java:256)
    at
org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:424)
    at
org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java:353)
    at
org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java:2360)
    at
org.apache.derby.impl.jdbc.ConnectionChild.handleException(ConnectionChild.java:82)
    at
org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1334)
    at
org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:630)
    at
org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:559)
    ...
    at
javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
    at
javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
    at
javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at
javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.AbstractButton.doClick(AbstractButton.java:389)
    at
javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:809)
    at
javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:850)
    at java.awt.Component.processMouseEvent(Component.java:6382)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3275)
    at java.awt.Component.processEvent(Component.java:6147)
    at java.awt.Container.processEvent(Container.java:2083)
    at java.awt.Component.dispatchEventImpl(Component.java:4744)
    at java.awt.Container.dispatchEventImpl(Container.java:2141)
    at java.awt.Component.dispatchEvent(Component.java:4572)
    at
java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4619)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4280)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4210)
    at java.awt.Container.dispatchEventImpl(Container.java:2127)
    at java.awt.Window.dispatchEventImpl(Window.java:2489)
    at java.awt.Component.dispatchEvent(Component.java:4572)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:704)
    at java.awt.EventQueue.access$400(EventQueue.java:82)
    at java.awt.EventQueue$2.run(EventQueue.java:663)
    at java.awt.EventQueue$2.run(EventQueue.java:661)
    at java.security.AccessController.doPrivileged(Native Method)
    at
java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at
java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
    at java.awt.EventQueue$3.run(EventQueue.java:677)
    at java.awt.EventQueue$3.run(EventQueue.java:675)
    at java.security.AccessController.doPrivileged(Native Method)
    at
java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:674)
    at
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
    at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
    at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.sql.SQLException: 40XL1
    at
org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:42)
    at
org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(SQLExceptionFactory40.java:122)
    at
org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(SQLExceptionFactory40.java:71)
    ... 50 more
Caused by: ERROR 40XL1: 40XL1
    at
org.apache.derby.iapi.error.StandardException.newException(StandardException.java:268)
    at
org.apache.derby.impl.services.locks.ConcurrentLockSet.lockObject(ConcurrentLockSet.java:618)
    at
org.apache.derby.impl.services.locks.AbstractPool.lockObject(AbstractPool.java:119)
    at
org.apache.derby.impl.services.locks.ConcurrentPool.lockObject(ConcurrentPool.java:28)
    at
org.apache.derby.impl.store.raw.xact.ContainerLocking3.lockContainer(ContainerLocking3.java:64)
    at
org.apache.derby.impl.store.raw.data.BaseContainerHandle.useContainer(BaseContainerHandle.java:809)
    at
org.apache.derby.impl.store.raw.data.BaseDataFileFactory.openContainer(BaseDataFileFactory.java:645)
    at
org.apache.derby.impl.store.raw.data.BaseDataFileFactory.openContainer(BaseDataFileFactory.java:585)
    at
org.apache.derby.impl.store.raw.xact.Xact.openContainer(Xact.java:1327)
    at
org.apache.derby.impl.store.access.conglomerate.OpenConglomerate.init(OpenConglomerate.java:910)
    at org.apache.derby.impl.store.access.heap.Heap.open(Heap.java:689)
    at
org.apache.derby.impl.store.access.RAMTransaction.openConglomerate(RAMTransaction.java:476)
    at
org.apache.derby.impl.store.access.RAMTransaction.openConglomerate(RAMTransaction.java:1308)
    at
org.apache.derby.impl.sql.execute.DDLConstantAction.lockTableForDDL(DDLConstantAction.java:258)
    at
org.apache.derby.impl.sql.execute.DropTableConstantAction.executeConstantAction(DropTableConstantAction.java:164)
    at
org.apache.derby.impl.sql.execute.MiscResultSet.open(MiscResultSet.java:61)
    at
org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(GenericPreparedStatement.java:443)
    at
org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:324)
    at
org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1242)
    ... 44 more



With the officially released derby.jar file.


java.sql.SQLTransactionRollbackException: A lock could not be obtained
within the time requested
java.sql.SQLTransactionRollbackException: A lock could not be obtained
within the time requested
    at
org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown
Source)
    at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown
Source)
    at
org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(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)
    at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
    at com.a.db.derby.f.delete(ADerbyDAO.java:157)
    at com.a.db.controller.e.deleteZLTSimAccountDB(DBManager.java:144)
    at com.a.b.controller.d.deleteZLTSimAccount(AManager.java:173)
    at com.a.b.accounts.table.c$2.actionPerformed(ATablePopupMenu.java:100)
    at
javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
    at
javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
    at
javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at
javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.AbstractButton.doClick(AbstractButton.java:389)
    at
javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:809)
    at
javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:850)
    at java.awt.Component.processMouseEvent(Component.java:6382)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3275)
    at java.awt.Component.processEvent(Component.java:6147)
    at java.awt.Container.processEvent(Container.java:2083)
    at java.awt.Component.dispatchEventImpl(Component.java:4744)
    at java.awt.Container.dispatchEventImpl(Container.java:2141)
    at java.awt.Component.dispatchEvent(Component.java:4572)
    at
java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4619)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4280)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4210)
    at java.awt.Container.dispatchEventImpl(Container.java:2127)
    at java.awt.Window.dispatchEventImpl(Window.java:2489)
    at java.awt.Component.dispatchEvent(Component.java:4572)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:704)
    at java.awt.EventQueue.access$400(EventQueue.java:82)
    at java.awt.EventQueue$2.run(EventQueue.java:663)
    at java.awt.EventQueue$2.run(EventQueue.java:661)
    at java.security.AccessController.doPrivileged(Native Method)
    at
java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at
java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
    at java.awt.EventQueue$3.run(EventQueue.java:677)
    at java.awt.EventQueue$3.run(EventQueue.java:675)
    at java.security.AccessController.doPrivileged(Native Method)
    at
java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:674)
    at
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
    at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
    at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.sql.SQLException: A lock could not be obtained within the
time requested
    at
org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown
Source)
    at
org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown
Source)
    ... 51 more
Caused by: ERROR 40XL1: A lock could not be obtained within the time
requested
    at org.apache.derby.iapi.error.StandardException.newException(Unknown
Source)
    at
org.apache.derby.impl.services.locks.ConcurrentLockSet.lockObject(Unknown
Source)
    at org.apache.derby.impl.services.locks.AbstractPool.lockObject(Unknown
Source)
    at
org.apache.derby.impl.services.locks.ConcurrentPool.lockObject(Unknown
Source)
    at
org.apache.derby.impl.store.raw.xact.ContainerLocking3.lockContainer(Unknown
Source)
    at
org.apache.derby.impl.store.raw.data.BaseContainerHandle.useContainer(Unknown
Source)
    at
org.apache.derby.impl.store.raw.data.BaseDataFileFactory.openContainer(Unknown
Source)
    at
org.apache.derby.impl.store.raw.data.BaseDataFileFactory.openContainer(Unknown
Source)
    at org.apache.derby.impl.store.raw.xact.Xact.openContainer(Unknown
Source)
    at
org.apache.derby.impl.store.access.conglomerate.OpenConglomerate.init(Unknown
Source)
    at org.apache.derby.impl.store.access.heap.Heap.open(Unknown Source)
    at
org.apache.derby.impl.store.access.RAMTransaction.openConglomerate(Unknown
Source)
    at
org.apache.derby.impl.store.access.RAMTransaction.openConglomerate(Unknown
Source)
    at
org.apache.derby.impl.sql.execute.DDLConstantAction.lockTableForDDL(Unknown
Source)
    at
org.apache.derby.impl.sql.execute.DropTableConstantAction.executeConstantAction(Unknown
Source)
    at org.apache.derby.impl.sql.execute.MiscResultSet.open(Unknown Source)
    at
org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(Unknown
Source)
    at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown
Source)
    ... 45 more