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 "Kathey Marsden (JIRA)" <ji...@apache.org> on 2012/09/24 22:12:08 UTC

[jira] [Updated] (DERBY-5919) Network Server connection gets destroyed after isValid(#) times out.

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

Kathey Marsden updated DERBY-5919:
----------------------------------

      Issue & fix info: Newcomer,Repro attached
               Urgency: Normal
    Bug behavior facts: Crash,Embedded/Client difference
                Labels: derby_triage10_10  (was: )

I think isValid will need an alternate mechanism than timing out the socket. Perhaps it would be worthwile to use the same mechanism as setQueryTimeout as long as it does not have the same problem.
                
> Network Server connection gets destroyed after isValid(#) times out.
> --------------------------------------------------------------------
>
>                 Key: DERBY-5919
>                 URL: https://issues.apache.org/jira/browse/DERBY-5919
>             Project: Derby
>          Issue Type: Bug
>          Components: Network Server
>    Affects Versions: 10.9.1.0
>            Reporter: Myrna van Lunteren
>              Labels: derby_triage10_10
>
> When a call to Connection.isValid(timoutvalue) actually times out, the connection is destroyed.
> For instance, the following test snippet:
>         // Test with a large timeout, see DERBY-5912.
>         boolean convalid=true;
>         Connection conn=getConnection();
>         
>         // with a longer time out, the isValid call should not
>         // time out when the sleep is shorter.
>         convalid=conn.isValid(200);
>         assertTrue(convalid);
>         
>         // setting the timeout to 1 should timeout if the sleep
>         // is 2 seconds.
>         convalid=conn.isValid(1);
>         assertFalse(convalid);
>         
>         conn.rollback();
> Results in an assertion on the rollback:
> java.sql.SQLNonTransientConnectionException: No current connection.
> 	at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(SQLExceptionFactory40.java:70)
> 	at org.apache.derby.client.am.SqlException.getSQLException(SqlException.java:364)
> 	at org.apache.derby.client.am.Connection.rollback(Connection.java:668)
> 	at org.apache.derbyTesting.functionTests.tests.jdbc4.ConnectionTest.testIsValidWithTimeout(ConnectionTest.java:214)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
> 	at java.lang.reflect.Method.invoke(Method.java:611)
> 	at junit.framework.TestCase.runTest(TestCase.java:164)
> 	at junit.framework.TestCase.runBare(TestCase.java:130)
> 	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.framework.TestResult$1.protect(TestResult.java:106)
> 	at junit.framework.TestResult.runProtected(TestResult.java:124)
> 	at junit.framework.TestResult.run(TestResult.java:109)
> 	at junit.framework.TestCase.run(TestCase.java:120)
> 	at junit.framework.TestSuite.runTest(TestSuite.java:230)
> 	at junit.framework.TestSuite.run(TestSuite.java:225)
> 	at junit.framework.TestSuite.runTest(TestSuite.java:230)
> 	at junit.framework.TestSuite.run(TestSuite.java:225)
> 	at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
> 	at junit.extensions.TestSetup$1.protect(TestSetup.java:21)
> 	at junit.framework.TestResult.runProtected(TestResult.java:124)
> 	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.framework.TestResult.runProtected(TestResult.java:124)
> 	at junit.extensions.TestSetup.run(TestSetup.java:25)
> 	at junit.framework.TestSuite.runTest(TestSuite.java:230)
> 	at junit.framework.TestSuite.run(TestSuite.java:225)
> 	at junit.textui.TestRunner.doRun(TestRunner.java:121)
> 	at junit.textui.TestRunner.start(TestRunner.java:185)
> 	at junit.textui.TestRunner.main(TestRunner.java:143)
> Caused by: org.apache.derby.client.am.SqlException: No current connection.
> 	at org.apache.derby.client.am.Connection.checkForClosedConnection(Connection.java:2303)
> 	at org.apache.derby.client.am.Connection.rollback(Connection.java:661)
> 	... 32 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