db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Knut Anders Hatlen (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (DERBY-6238) Lock timeout in GrantRevokeTest.testGrantRollbackAndCommit
Date Mon, 03 Jun 2013 08:48:20 GMT

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

Knut Anders Hatlen updated DERBY-6238:
--------------------------------------

    Attachment: dump-locktable.diff

The attached patch, dump-locktable.diff, makes the test dump the lock table when a lock timeout
happens, so that we get more information the next time it fails.

I see that many test cases in GrantRevokeTest are commented out because of unexplained lock
timeouts. I don't know, but they may be related to the timeouts we're seeing in this issue.

The patch also cleans up some aspects of the test's error reporting and releasing of resources:

- Check SQL state of expected exceptions

- Include stack trace of unexpected exceptions

- Close a connection that was forgotten

Committed revision 1488896.
                
> Lock timeout in GrantRevokeTest.testGrantRollbackAndCommit
> ----------------------------------------------------------
>
>                 Key: DERBY-6238
>                 URL: https://issues.apache.org/jira/browse/DERBY-6238
>             Project: Derby
>          Issue Type: Bug
>          Components: Test
>    Affects Versions: 10.11.0.0
>         Environment: Svn revision: 1487946
> Oracle Linux Server release 6.1
> java.vendor=Oracle Corporation
> java.runtime.version=1.7.0_10-b31
> os.name=Linux
> os.arch=amd64
> os.version=2.6.32-100.34.1.el6uek.x86_64
>            Reporter: Knut Anders Hatlen
>         Attachments: dump-locktable.diff
>
>
> Seen once in nightly testing of trunk:
> http://download.java.net/javadesktop/derby/javadb-5577635-report/javadb-task-3661910.html
> junit.framework.ComparisonFailure: Unexpected SQL state. expected:<4[2502]> but
was:<4[0XL1]>
> 	at org.apache.derbyTesting.junit.BaseJDBCTestCase.assertSQLState(BaseJDBCTestCase.java:875)
> 	at org.apache.derbyTesting.junit.BaseJDBCTestCase.assertSQLState(BaseJDBCTestCase.java:939)
> 	at org.apache.derbyTesting.functionTests.tests.lang.GrantRevokeTest.assertUpdatePrivilege(GrantRevokeTest.java:1219)
> 	at org.apache.derbyTesting.functionTests.tests.lang.GrantRevokeTest.testGrantRollbackAndCommit(GrantRevokeTest.java:333)
> 	at org.apache.derbyTesting.junit.BaseTestCase.runBare(BaseTestCase.java:117)
> 	at org.apache.derbyTesting.junit.BaseJDBCTestCase.runBareOverridable(BaseJDBCTestCase.java:439)
> 	at org.apache.derbyTesting.junit.BaseJDBCTestCase.runBare(BaseJDBCTestCase.java:456)
> 	at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
> 	at junit.extensions.TestSetup$1.protect(TestSetup.java:21)
> 	at junit.extensions.TestSetup.run(TestSetup.java:25)
> 	at org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57)
> 	at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
> 	at junit.extensions.TestSetup$1.protect(TestSetup.java:21)
> 	at junit.extensions.TestSetup.run(TestSetup.java:25)
> 	at org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57)
> 	at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
> 	at junit.extensions.TestSetup$1.protect(TestSetup.java:21)
> 	at junit.extensions.TestSetup.run(TestSetup.java:25)
> 	at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
> 	at junit.extensions.TestSetup$1.protect(TestSetup.java:21)
> 	at junit.extensions.TestSetup.run(TestSetup.java:25)
> 	at org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57)
> 	at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
> 	at junit.extensions.TestSetup$1.protect(TestSetup.java:21)
> 	at junit.extensions.TestSetup.run(TestSetup.java:25)
> 	at org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57)
> 	at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
> 	at junit.extensions.TestSetup$1.protect(TestSetup.java:21)
> 	at junit.extensions.TestSetup.run(TestSetup.java:25)
> 	at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
> 	at junit.extensions.TestSetup$1.protect(TestSetup.java:21)
> 	at junit.extensions.TestSetup.run(TestSetup.java:25)
> Caused by: java.sql.SQLTransactionRollbackException: A lock could not be obtained within
the time requested
> 	at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(SQLExceptionFactory40.java:88)
> 	at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Util.java:327)
> 	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:2396)
> 	at org.apache.derby.impl.jdbc.ConnectionChild.handleException(ConnectionChild.java:85)
> 	at org.apache.derby.impl.jdbc.EmbedDatabaseMetaData.getPreparedQueryUsingSystemTables(EmbedDatabaseMetaData.java:3579)
> 	at org.apache.derby.impl.jdbc.EmbedDatabaseMetaData.getPreparedQuery(EmbedDatabaseMetaData.java:3623)
> 	at org.apache.derby.impl.jdbc.EmbedDatabaseMetaData.getPreparedQuery(EmbedDatabaseMetaData.java:3650)
> 	at org.apache.derby.impl.jdbc.EmbedDatabaseMetaData.doGetCols(EmbedDatabaseMetaData.java:1960)
> 	at org.apache.derby.impl.jdbc.EmbedDatabaseMetaData.getColumns(EmbedDatabaseMetaData.java:1932)
> 	at org.apache.derbyTesting.functionTests.tests.lang.GrantRevokeTest.assertUpdatePrivilege(GrantRevokeTest.java:1200)
> Caused by: java.sql.SQLException: A lock could not be obtained within the time requested
> 	at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:42)
> 	at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(SQLExceptionFactory40.java:126)
> 	at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(SQLExceptionFactory40.java:71)
> Caused by: ERROR 40XL1: A lock could not be obtained within the time requested
> 	at org.apache.derby.iapi.error.StandardException.newException(StandardException.java:266)
> 	at org.apache.derby.impl.services.locks.ConcurrentLockSet.lockObject(ConcurrentLockSet.java:619)
> 	at org.apache.derby.impl.services.locks.AbstractPool.lockObject(AbstractPool.java:120)
> 	at org.apache.derby.impl.services.locks.ConcurrentPool.lockObject(ConcurrentPool.java:28)
> 	at org.apache.derby.impl.store.raw.xact.RowLocking3.lockRecordForRead(RowLocking3.java:188)
> 	at org.apache.derby.impl.store.access.heap.HeapController.lockRow(HeapController.java:521)
> 	at org.apache.derby.impl.store.access.heap.HeapController.lockRow(HeapController.java:638)
> 	at org.apache.derby.impl.store.access.btree.index.B2IRowLocking3.lockRowOnPage(B2IRowLocking3.java:299)
> 	at org.apache.derby.impl.store.access.btree.index.B2IRowLocking3._lockScanRow(B2IRowLocking3.java:583)
> 	at org.apache.derby.impl.store.access.btree.index.B2IRowLockingRR.lockScanRow(B2IRowLockingRR.java:104)
> 	at org.apache.derby.impl.store.access.btree.BTreeForwardScan.fetchRows(BTreeForwardScan.java:306)
> 	at org.apache.derby.impl.store.access.btree.BTreeScan.fetchNext(BTreeScan.java:1600)
> 	at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getDescriptorViaIndexMinion(DataDictionaryImpl.java:9534)
> 	at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getDescriptorViaIndex(DataDictionaryImpl.java:9397)
> 	at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getSPSDescriptorIndex1Scan(DataDictionaryImpl.java:4282)
> 	at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getSPSDescriptor(DataDictionaryImpl.java:4252)
> 	at org.apache.derby.impl.jdbc.EmbedDatabaseMetaData.prepareSPS(EmbedDatabaseMetaData.java:3716)
> 	at org.apache.derby.impl.jdbc.EmbedDatabaseMetaData.getPreparedQueryUsingSystemTables(EmbedDatabaseMetaData.java:3572)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message