db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rick Hillegas (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (DERBY-6595) CheckToursDBTest failed while updating sequence value on disk
Date Wed, 04 Jun 2014 18:45:04 GMT

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

Rick Hillegas updated DERBY-6595:
---------------------------------

    Attachment: derby-6595-01-aa-dontClearSequenceCache.diff

Attaching derby-6595-01-aa-dontClearSequenceCache.diff. This patch should fix this bug if
we can figure out how to trip it. I will run regression tests.

This patch applies the fix for DERBY-6137 to the cache clearing code in DataDictionaryImpl.doneReading().

I have not been able to reproduce the bug. There is a lot of complicated, poorly documented
state which surrounds how the DataDictionary switches between COMPILE_ONLY_MODE and DDL_MODE.
This complicated state includes a lock on the cacheCoordinator. The code in doneReading()
suggests that the heisenbug arises when the DataDictionary has decided that it can switch
back from DDL_MODE to COMPILE_ONLY_MODE at the end of compiling a trigger. I don't know how
to set up this situation. Some of this code was added in order to fix Beetle 4418. I don't
have access to that bug report.


Touches the following file:

M       java/engine/org/apache/derby/impl/sql/catalog/DataDictionaryImpl.java


> CheckToursDBTest failed while updating sequence value on disk
> -------------------------------------------------------------
>
>                 Key: DERBY-6595
>                 URL: https://issues.apache.org/jira/browse/DERBY-6595
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.11.0.0
>            Reporter: Knut Anders Hatlen
>         Attachments: derby-6595-01-aa-dontClearSequenceCache.diff, derby.log, error-stacktrace.txt
>
>
> I saw a failure in CheckToursDBTest while running the demo test suite on trunk. It was
reported as an ArrayIndexOutOfBoundsException. The ArrayIndexOutOfBoundsException happened
during cleanup and shadowed the original exception. The original exception in derby.log looked
like this:
> {noformat}
> ERROR XSTA2: A transaction was already active, when attempt was made to make another
transaction active.
> 	at org.apache.derby.iapi.error.StandardException.newException(StandardException.java:290)
> 	at org.apache.derby.iapi.error.StandardException.newException(StandardException.java:285)
> 	at org.apache.derby.impl.store.raw.xact.XactFactory.pushTransactionContext(XactFactory.java:766)
> 	at org.apache.derby.impl.store.raw.xact.XactFactory.startCommonTransaction(XactFactory.java:293)
> 	at org.apache.derby.impl.store.raw.xact.XactFactory.startNestedUpdateUserTransaction(XactFactory.java:350)
> 	at org.apache.derby.impl.store.raw.RawStore.startNestedUpdateUserTransaction(RawStore.java:460)
> 	at org.apache.derby.impl.store.access.RAMTransaction.startNestedUserTransaction(RAMTransaction.java:2326)
> 	at org.apache.derby.impl.sql.catalog.SequenceUpdater.updateCurrentValueOnDisk(SequenceUpdater.java:486)
> 	at org.apache.derby.impl.sql.catalog.SequenceUpdater.clean(SequenceUpdater.java:218)
> 	at org.apache.derby.impl.sql.catalog.SequenceUpdater.clearIdentity(SequenceUpdater.java:257)
> 	at org.apache.derby.impl.services.cache.ConcurrentCache.removeEntry(ConcurrentCache.java:167)
> 	at org.apache.derby.impl.services.cache.ConcurrentCache.ageOut(ConcurrentCache.java:583)
> 	at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.clearSequenceCaches(DataDictionaryImpl.java:8968)
> 	at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.clearCaches(DataDictionaryImpl.java:8951)
> 	at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.clearCaches(DataDictionaryImpl.java:8937)
> 	at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.doneReading(DataDictionaryImpl.java:1184)
> 	at org.apache.derby.impl.sql.GenericStatement.prepMinion(GenericStatement.java:519)
> 	at org.apache.derby.impl.sql.GenericStatement.prepareStorable(GenericStatement.java:687)
> 	at org.apache.derby.iapi.sql.dictionary.SPSDescriptor.compileStatement(SPSDescriptor.java:373)
> 	at org.apache.derby.iapi.sql.dictionary.SPSDescriptor.prepareAndRelease(SPSDescriptor.java:264)
> 	at org.apache.derby.iapi.sql.dictionary.SPSDescriptor.getPreparedStatement(SPSDescriptor.java:739)
> 	at org.apache.derby.iapi.sql.dictionary.SPSDescriptor.getPreparedStatement(SPSDescriptor.java:655)
> 	at org.apache.derby.impl.sql.execute.GenericTriggerExecutor.executeSPS(GenericTriggerExecutor.java:171)
> 	at org.apache.derby.impl.sql.execute.GenericTriggerExecutor.executeWhenClauseAndAction(GenericTriggerExecutor.java:346)
> 	at org.apache.derby.impl.sql.execute.RowTriggerExecutor.fireTrigger(RowTriggerExecutor.java:113)
> 	at org.apache.derby.impl.sql.execute.TriggerEventActivator.notifyEvent(TriggerEventActivator.java:272)
> 	at org.apache.derby.impl.sql.execute.UpdateResultSet.fireAfterTriggers(UpdateResultSet.java:831)
> 	at org.apache.derby.impl.sql.execute.UpdateResultSet.open(UpdateResultSet.java:282)
> 	at org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(GenericPreparedStatement.java:470)
> 	at org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:349)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1338)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:704)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:631)
> 	at org.apache.derbyTesting.functionTests.tests.demo.CheckToursDBTest.doUpdate(CheckToursDBTest.java:163)
> 	at org.apache.derbyTesting.functionTests.tests.demo.CheckToursDBTest.testToursDB(CheckToursDBTest.java:108)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:483)
> 	at junit.framework.TestCase.runTest(TestCase.java:168)
> 	at junit.framework.TestCase.runBare(TestCase.java:134)
> 	at org.apache.derbyTesting.junit.BaseTestCase.runBare(BaseTestCase.java:118)
> 	at org.apache.derbyTesting.junit.BaseJDBCTestCase.runBareOverridable(BaseJDBCTestCase.java:440)
> 	at org.apache.derbyTesting.junit.BaseJDBCTestCase.runBare(BaseJDBCTestCase.java:457)
> 	at junit.framework.TestResult$1.protect(TestResult.java:110)
> 	at junit.framework.TestResult.runProtected(TestResult.java:128)
> 	at junit.framework.TestResult.run(TestResult.java:113)
> 	at junit.framework.TestCase.run(TestCase.java:124)
> 	at junit.framework.TestSuite.runTest(TestSuite.java:232)
> 	at junit.framework.TestSuite.run(TestSuite.java:227)
> 	at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
> 	at junit.extensions.TestSetup$1.protect(TestSetup.java:23)
> 	at junit.framework.TestResult.runProtected(TestResult.java:128)
> 	at junit.extensions.TestSetup.run(TestSetup.java:27)
> 	at junit.framework.TestSuite.runTest(TestSuite.java:232)
> 	at junit.framework.TestSuite.run(TestSuite.java:227)
> 	at junit.framework.TestSuite.runTest(TestSuite.java:232)
> 	at junit.framework.TestSuite.run(TestSuite.java:227)
> 	at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:518)
> 	at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1052)
> 	at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:906)
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Mime
View raw message