db-derby-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Suresh Thalamati <suresh.thalam...@gmail.com>
Subject Re: lock timeout problems
Date Wed, 09 Feb 2005 00:22:13 GMT

It is strange that you are getting lock time out error with a single 
thread.  First thing I would
do is to identify what is holding the  lock for this thread to get lock 
time out.  One way to
do that is to set the following properties in derby.properties or with 
-D option on JVM start.

derby.locks.monitor=true
derby.locks.deadlockTrace=true

When you set the above properties lock table will be dumped to 
derby.log  when timeout occurs.
More info is available at: 
http://incubator.apache.org/derby/manuals/admin/hubprnt56.html#Lock+Monitoring

Lock table might not have the SQL statement which is holding the lock. 
Following  property might help in locating the statement:
derby.language.logStatementText 
<http://incubator.apache.org/derby/manuals/tuning/perf77.html#derby.language.logStatementText>

http://incubator.apache.org/derby/manuals/tuning/perf77.html

when logStatementText  property is set all the statement executed on the 
system will be written to the  derby.log.
Statement information also includes the transaction id on which the 
statement being executed.

Using the transaction ID that is holding the lock in the lock table dump 
if you do a reverse search
for the transaction id in the derby.log , it is possible to narrow down 
the statements that might be
holding the locks.


-suresh



Jeremiah Jahn wrote:

>I have autocommit set to true and one process accessing the system at a
>time. anyone know of a reason that a delete * from a table would give me
>this message?
>
>ERROR 40XL1: A lock could not be obtained within the time requested
>	at org.apache.derby.iapi.error.StandardException.newException(StandardException.java)
>	at org.apache.derby.impl.services.locks.LockSet.lockObject(LockSet.java)
>	at org.apache.derby.impl.services.locks.SinglePool.lockAnObject(SinglePool.java)
>	at org.apache.derby.impl.services.locks.SinglePool.lockObject(SinglePool.java)
>	at org.apache.derby.impl.store.raw.xact.RowLocking3.lockRecordForWrite(RowLocking3.java)
>	at org.apache.derby.impl.store.access.heap.HeapController.lockRow(HeapController.java)
>	at org.apache.derby.impl.store.access.heap.HeapController.lockRow(HeapController.java)
>	at org.apache.derby.impl.store.access.btree.index.B2IRowLocking3.lockRowOnPage(B2IRowLocking3.java)
>	at org.apache.derby.impl.store.access.btree.index.B2IRowLocking3._lockScanRow(B2IRowLocking3.java)
>	at org.apache.derby.impl.store.access.btree.index.B2IRowLockingRR.lockScanRow(B2IRowLockingRR.java)
>	at org.apache.derby.impl.store.access.btree.BTreeForwardScan.fetchRows(BTreeForwardScan.java)
>	at org.apache.derby.impl.store.access.btree.BTreeScan.next(BTreeScan.java)
>	at org.apache.derby.impl.sql.execute.IndexChanger.doDelete(IndexChanger.java)
>	at org.apache.derby.impl.sql.execute.IndexChanger.delete(IndexChanger.java)
>	at org.apache.derby.impl.sql.execute.IndexSetChanger.delete(IndexSetChanger.java)
>	at org.apache.derby.impl.sql.execute.RowChangerImpl.deleteRow(RowChangerImpl.java)
>	at org.apache.derby.impl.sql.execute.DeleteResultSet.collectAffectedRows(DeleteResultSet.java)
>	at org.apache.derby.impl.sql.execute.DeleteResultSet.open(DeleteResultSet.java)
>	at org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java)
>	at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java)
>	at org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java)
>	at org.apache.derby.impl.jdbc.EmbedStatement.executeUpdate(EmbedStatement.java)
>	at com.goodinassociates.evidencetracking.functionaltests.DatabaseTestHelper.cleanTable(DatabaseTestHelper.java:598)
>	at com.goodinassociates.evidencetracking.functionaltests.DatabaseTestHelper.cleanOrganizationTable(DatabaseTestHelper.java:135)
>	at com.goodinassociates.evidencetracking.functionaltests.DatabaseTestHelper.prepareOrganizationTable(DatabaseTestHelper.java:112)
>	at com.goodinassociates.evidencetracking.organization.OrganizationTest.setUp(OrganizationTest.java:35)
>	at junit.framework.TestCase.runBare(TestCase.java:125)
>	at junit.framework.TestResult$1.protect(TestResult.java:106)
>	at junit.framework.TestResult.runProtected(TestResult.java:124)
>	at junit.framework.TestResult.run(TestResult.java:109)
>	at junit.framework.TestCase.run(TestCase.java:118)
>	at junit.framework.TestSuite.runTest(TestSuite.java:208)
>	at junit.framework.TestSuite.run(TestSuite.java:203)
>	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:421)
>	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:305)
>	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:186)
>
>
>The men sat sipping their tea in silence. After a while the klutz said,
>"Life is like a bowl of sour cream." "Like a bowl of sour cream?" asked
>the other. "Why?" "How should I know? What am I, a philosopher?"
>  
>


Mime
View raw message