[
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