[
https://issues.apache.org/jira/browse/DERBY-4097?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Knut Anders Hatlen updated DERBY-4097:
--------------------------------------
Attachment: d4097-1a-rescanOnWaitError.diff
The attached patch d4097-1a-rescanOnWaitError.diff increases the number of
iterations in the test case to more reliably reproduce the WaitError, and it
modifies BTreeController.comparePreviousRecord() so that it releases all
latches and returns RESCAN_REQUIRED when a WaitError is detected. This is not
an ideal solution, as the thread that gets the WaitError may need many tries
before it manages to latch the left sibling, and it will be constantly spending
CPU until it manages to acquire the latch. Anyways, it should not happen very
frequently, and I think a spin-wait loop is better than failing in this
situation. (This is yet another reason to rewrite the nullable unique insert
code as suggested by Mike in the thread mentioned in an earlier comment.)
NullableUniqueConstraintTest passed with this patch. Will start the rest of the
regression test suite now.
> 'testMixedInsertDelete(org.apache.derbyTesting.functionTests.tests.lang.NullableUniqueConstraintTest)org.apache.derby.client.am.BatchUpdateException'
> -----------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: DERBY-4097
> URL: https://issues.apache.org/jira/browse/DERBY-4097
> Project: Derby
> Issue Type: Bug
> Components: Regression Test Failure
> Affects Versions: 10.5.0.0
> Environment: OS:
> Solaris 9 9/04 s9s_u7wos_09 SPARC 64bits
> SunOS 5.9 Generic_118558-11
> JVM:
> Sun Microsystems Inc.
> java version "1.5.0_14"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_14-b03)
> Java HotSpot(TM) Client VM (build 1.5.0_14-b03, mixed mode)
> OS:
> Solaris 10 5/08 s10x_u5wos_10 X86 64bits
> SunOS 5.10 Generic_127128-11
> JVM:
> Sun Microsystems Inc.
> java version "1.5.0_14"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_14-b03)
> Java HotSpot(TM) Client VM (build 1.5.0_14-b03, mixed mode)
> Reporter: Ole Solberg
> Assignee: Knut Anders Hatlen
> Priority: Minor
> Attachments: batchexception.diff, d4097-1a-rescanOnWaitError.diff
>
>
> Seen twice....
> See
> http://dbtg.thresher.com/derby/test/trunk15/jvm1.5/testing/testlog/SunOS-5.9_sun4u-sparc/754716-org.apache.derbyTesting.functionTests.suites.All_diff.txt
> http://dbtg.thresher.com/derby/test/trunk15/jvm1.5/testing/testlog/SunOS-5.10_i86pc-i386/753342-org.apache.derbyTesting.functionTests.suites.All_diff.txt
> 1)
> testMixedInsertDelete(org.apache.derbyTesting.functionTests.tests.lang.NullableUniqueConstraintTest)org.apache.derby.client.am.BatchUpdateException:
> Non-atomic batch failure. The batch was submitted, but at least one
> exception occurred on an individual member of the batch. Use
> getNextException() to retrieve the exceptions for specific batched elements.
> at org.apache.derby.client.am.Agent.endBatchedReadChain(Unknown Source)
> at
> org.apache.derby.client.am.PreparedStatement.executeBatchRequestX(Unknown
> Source)
> at org.apache.derby.client.am.PreparedStatement.executeBatchX(Unknown
> Source)
> at org.apache.derby.client.am.PreparedStatement.executeBatch(Unknown
> Source)
> at
> org.apache.derbyTesting.functionTests.tests.lang.NullableUniqueConstraintTest.testMixedInsertDelete(NullableUniqueConstraintTest.java:481)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at
> org.apache.derbyTesting.junit.BaseTestCase.runBare(BaseTestCase.java:105)
> 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)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.