You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Knut Anders Hatlen (JIRA)" <ji...@apache.org> on 2013/02/26 09:38:12 UTC

[jira] [Commented] (DERBY-6092) testPositionAgressive(org.apache.derbyTesting.functionTests.tests.jdbcapi.BlobClob4BlobTest)j fails with : 'The handle is invalid.: java.io.IOException'.

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

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

Not sure if it's what causing the exception, but LOBStreamControl has a finalize() method that ends up calling LOBFile.close(), so it is possible that the gc thread is trying to close the same RAF instance at the same time this happens. It should be safe, and I see that at least OpenJDK has a synchronized region in RAF.close() to prevent trouble with concurrent callers. But since the failure was seen on an old JVM version, there might be a JVM bug that causes such problems when two threads try to close a RAF at the same time.

A quick search for the exception message text pointed me to LUCENE-669, where it was reported that IBM 1.5 on Windows had problems with double close. That's the same platform, so at least it's a theory.
                
> testPositionAgressive(org.apache.derbyTesting.functionTests.tests.jdbcapi.BlobClob4BlobTest)j fails with : 'The handle is invalid.: java.io.IOException'.
> ---------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-6092
>                 URL: https://issues.apache.org/jira/browse/DERBY-6092
>             Project: Derby
>          Issue Type: Bug
>          Components: JDBC
>         Environment: IBM 1,5 
> java.specification.version: 1.5
> java.runtime.version: pwi32dev-20121015 (SR15 )
> java.fullversion: J2RE 1.5.0 IBM J9 2.3 Windows XP x86-32 j9vmwi3223-20121012 (JIT enabled)
> J9VM - 20121010_124616_lHdSMr
> JIT  - 20120914_26053ifx1_r8
> GC   - 20120911_AA
>            Reporter: Kathey Marsden
>
> There was 1 error:
> http://people.apache.org/~myrnavl/derby_test_results/main/windows/testlog/ibm15/1449432-suites.All_diff.txt
> 1) testPositionAgressive(org.apache.derbyTesting.functionTests.tests.jdbcapi.BlobClob4BlobTest)java.sql.SQLException: Java exception: 'The handle is invalid.: java.io.IOException'.
> 	at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
> 	at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
> 	at org.apache.derby.impl.jdbc.Util.javaException(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedConnection.clearLOBMapping(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedConnection.commit(Unknown Source)
> 	at org.apache.derbyTesting.junit.BaseJDBCTestCase.commit(BaseJDBCTestCase.java:393)
> 	at org.apache.derbyTesting.functionTests.tests.jdbcapi.BlobClob4BlobTest.testPositionAgressive(BlobClob4BlobTest.java:1070)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at org.apache.derbyTesting.junit.BaseTestCase.runBare(BaseTestCase.java:117)
> 	at org.apache.derbyTesting.junit.BaseJDBCTestCase.runBareOverridable(BaseJDBCTestCase.java:424)
> 	at org.apache.derbyTesting.junit.BaseJDBCTestCase.runBare(BaseJDBCTestCase.java:441)
> 	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)
> Caused by: java.io.IOException: The handle is invalid.
> 	at java.io.RandomAccessFile.close0(Native Method)
> 	at java.io.RandomAccessFile.close(RandomAccessFile.java:573)
> 	at org.apache.derby.impl.jdbc.LOBFile.close(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EncryptedLOBFile.close(Unknown Source)
> 	... 53 more

--
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