[ 
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

Reply via email to