[ 
https://issues.apache.org/jira/browse/DERBY-4097?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12682366#action_12682366
 ] 

Knut Anders Hatlen commented on DERBY-4097:
-------------------------------------------

The use of batch update in this test makes it difficult to see what the real 
error is, since one needs to call getNextException() on the 
BatchUpdateException. There's no real need for batch update in the failing test 
case. I wrote it, and I think I used batch update because I was struggling with 
some networking issues at that time (high latency on local connections) so that 
batch update was much faster.

Removing the use of batch update is one alternative to expose the real error. 
However, that will change the timing and may hide this failure if it is 
timing-sensitive. Another alternative is to add a wrapper around executeBatch() 
and call getException() in the test. I have also noticed that in embedded mode, 
the underlying exception is available with getCause() and is therefore reported 
by JUnit, whereas the client driver (where we see this problem now) does not do 
that. So a third option is to make the client driver report these errors the 
same way as the embedded driver.

> '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
>            Priority: Minor
>
> 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.

Reply via email to