db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dag H. Wanvik (JIRA)" <j...@apache.org>
Subject [jira] Issue Comment Edited: (DERBY-5109) testRAFWriteInterupted fails with The exception 'junit.framework.AssertionFailedError: interrupt flag lost' was thrown while evaluating an expression
Date Thu, 17 Mar 2011 10:58:29 GMT

    [ 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

Mime
View raw message