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 "Dag H. Wanvik (JIRA)" <ji...@apache.org> on 2011/03/17 11:58:29 UTC

[jira] Issue Comment Edited: (DERBY-5109) testRAFWriteInterupted fails with The exception 'junit.framework.AssertionFailedError: interrupt flag lost' was thrown while evaluating an expression

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

Dag H. Wanvik edited comment on DERBY-5109 at 3/17/11 10:57 AM:
----------------------------------------------------------------

It seems like the thread's interrupt flag is gets lost along the way (of execution) here. So, you don't see this at all with IBM 1.6?
In the first case, the assert fails after executing an update which does not throw, but that was interrupted before execution of the update starts. Maybe you could instrument InterruptStatus#setInterrupted to see if Derby ever notices the interrupt. If so, the flag should be reinstated before the API call exits in a call to #restoreIntrFlagIfSeen. If Derby doesn't see it, it can be that some JRE method that swallows it silently, or some location where I have forgotten to save the flag, but if so strange it only happens on this VM..

In the second case Myrna tried , (testInterruptBatch), 08000 i seen but again the flag is not set. I tend to think this must be a JVM issue.. Instrumentation of #throwIf should reveal if the exception comes from where we assume it should during batch execution (EmbedStatement#executeBatch, ca line 983.


      was (Author: dagw):
    It seems like the thread's interrupt flag is gets lost along the way (of execution) here. So, you don't see this at all with IBM 1.6?
In the first case, the assert fails after executing an update which does not throw, but that was interrupted before execution of the update starts. Maybe you could instrument InterruptStatus#setInterrupted to see if Derby ever notices the interrupt. If so, the flag should be reinstated before the API call exits in a call to #restoreIntrFlagIfSeen. If Derby doesn't see it, it can be that some JRE method that swallows it silently, or some location where I have forgotten to save the flag, but if so strange it only happens on this VM..

In the second case Myrna tried , (testInterruptBatch), 08000 i seen but again the flag is not set. I tend to this this must be a JVM issue.. Instrumentation of #throwIf should reveal if the exception comes from where we assume it shoudl during batch execution (EmbedStatement#executeBatch, ca line 983.
  
> testRAFWriteInterupted fails with The exception 'junit.framework.AssertionFailedError: interrupt flag lost' was thrown while evaluating an expression
> -----------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-5109
>                 URL: https://issues.apache.org/jira/browse/DERBY-5109
>             Project: Derby
>          Issue Type: Bug
>    Affects Versions: 10.8.0.0
>         Environment: IBM 1.4.2   10.8.0.1 alpha - (1079089) 3/7/2011
> on LInux
>            Reporter: Kathey Marsden
>
> I saw the following failure with IBM 1.4.2.
> testRAFWriteInterrupted(org.apache.derbyTesting.functionTests.tests.store.InterruptResilienceTest)java.sql.SQLException: The exception 'junit.framework.AssertionFailedError: interrupt flag lost' was thrown while evaluating an expression.
> 	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.seeNextException(Unknown Source)
> 	at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source)
> 	at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
> 	at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.executeUpdate(Unknown Source)
> 	at org.apache.derbyTesting.functionTests.tests.store.InterruptResilienceTest.testRAFWriteInterrupted(InterruptResilienceTest.java:204)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java(Compiled Code))
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java(Compiled Code))
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))
> 	at org.apache.derbyTesting.junit.BaseTestCase.runBare(BaseTestCase.java(Compiled Code))
> 	at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
> 	at junit.extensions.TestSetup$1.protect(TestSetup.java:19)
> 	at junit.extensions.TestSetup.run(TestSetup.java:23)
> 	at org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57)
> 	at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
> 	at junit.extensions.TestSetup$1.protect(TestSetup.java:19)
> 	at junit.extensions.TestSetup.run(TestSetup.java:23)
> 	at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
> 	at junit.extensions.TestSetup$1.protect(TestSetup.java:19)
> 	at junit.extensions.TestSetup.run(TestSetup.java:23)
> Caused by: java.sql.SQLException: Java exception: 'interrupt flag lost: junit.framework.AssertionFailedError'.
> 	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.TransactionResourceImpl.wrapInSQLException(Unknown Source)
> 	... 46 more
> Caused by: junit.framework.AssertionFailedError: interrupt flag lost
> 	at org.apache.derbyTesting.functionTests.tests.store.InterruptResilienceTest.tstRAFwriteInterrupted(InterruptResilienceTest.java(Compiled Code))
> 	at org.apache.derby.exe.ac0b5b0099x012ex9446x7cf7xfffffa2dc87e0.g0(Unknown Source)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java(Compiled Code))
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java(Compiled Code))
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))
> 	at org.apache.derby.impl.services.reflect.ReflectMethod.invoke(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.CallStatementResultSet.open(Unknown Source)
> 	at org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(Unknown Source)
> 	at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown Source)
> 	... 42 more

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira