db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kristian Waagan (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DERBY-4640) Intermittent "Connection closed by unknown interrupt." errors
Date Wed, 05 May 2010 10:15:04 GMT

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

Kristian Waagan commented on DERBY-4640:
----------------------------------------

Hi Ibrahim,

Thanks for the report.

I think the issue making things more complicated, is that Derby may be interrupted while writing
data to disk. Before NIO, I don't think this was possible - the ongoing IO operation was allowed
to finish.
So we can't simply catch and log the exception, we also have to make sure the data on disk
is consistent.

The fact that FutureTask.cancel(boolean)  may use Thread.interrupt() to cancel running tasks
is bad news for embedded Derby, and I think it would be beneficial if the community managed
to deal with this issue sooner than later. Fortunately the error reporting was improved a
while ago, such that it is easier to detect this situation.

Regarding the code snippet, maybe it would be more appropriate to do this in Derby (where
IO isn't a concern)?
while (condition) {
    try {
          Object.wait();
    } catch (InterruptedException e) {
        log e;
        // Restore the interrupted status
        Thread.currentThread().interrupt();
    }
} 

> Intermittent "Connection closed by unknown interrupt." errors
> -------------------------------------------------------------
>
>                 Key: DERBY-4640
>                 URL: https://issues.apache.org/jira/browse/DERBY-4640
>             Project: Derby
>          Issue Type: Bug
>    Affects Versions: 10.5.3.0
>         Environment: Java version: 1.6.0_18
> Embedded Derby: 1.5.3.0
>            Reporter: Ibrahim Hasbini
>            Priority: Critical
>             Fix For: 10.5.3.0
>
>
> An intermittent InterruptedException causes certain queries to fail (an sql delete in
this case).
> derby.log output:
> 2010-05-03 11:29:29.400 GMT Thread[GC.EndPointInfo Runnable Thread - xyz.middleware.remoting.connection.GC$EndPointInfo$1@1cf3127,5,main]
(XID = 1089), (SESSIONID = 3), (DATABASE = .xyz/middleware/registry/middleware.registry/db),
(DRDAID = null), Failed Statement is: null with 1 parameters begin parameter #1: 227 :end
parameter 
> ERROR 08000: Connection closed by unknown interrupt.
> 	at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
> 	at org.apache.derby.iapi.error.StandardException.interrupt(Unknown Source)
> 	at org.apache.derby.impl.store.raw.log.LogToFile.flush(Unknown Source)
> 	at org.apache.derby.impl.store.raw.log.LogToFile.flush(Unknown Source)
> 	at org.apache.derby.impl.store.raw.log.FileLogger.flush(Unknown Source)
> 	at org.apache.derby.impl.store.raw.xact.Xact.prepareCommit(Unknown Source)
> 	at org.apache.derby.impl.store.raw.xact.Xact.commit(Unknown Source)
> 	at org.apache.derby.impl.store.raw.xact.Xact.commit(Unknown Source)
> 	at org.apache.derby.impl.store.access.RAMTransaction.commit(Unknown Source)
> 	at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.doCommit(Unknown
Source)
> 	at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.userCommit(Unknown
Source)
> 	at org.apache.derby.impl.jdbc.TransactionResourceImpl.commit(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedConnection.commit(Unknown Source)
> 	at org.apache.commons.dbcp.DelegatingConnection.commit(DelegatingConnection.java:334)
> 	at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.commit(PoolingDataSource.java:211)
> (...)
> Caused by: java.lang.InterruptedException
> 	at java.lang.Object.wait(Native Method)
> 	at java.lang.Object.wait(Object.java:485)
> 	at org.apache.derby.impl.store.raw.log.LogToFile.flush(Unknown Source)
> 	at org.apache.derby.impl.store.raw.log.LogToFile.flush(Unknown Source)
> 	at org.apache.derby.impl.store.raw.log.FileLogger.flush(Unknown Source)
> 	at org.apache.derby.impl.store.raw.xact.Xact.prepareCommit(Unknown Source)
> 	at org.apache.derby.impl.store.raw.xact.Xact.commit(Unknown Source)
> 	at org.apache.derby.impl.store.raw.xact.Xact.commit(Unknown Source)
> 	at org.apache.derby.impl.store.access.RAMTransaction.commit(Unknown Source)
> 	at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.doCommit(Unknown
Source)
> 	at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.userCommit(Unknown
Source)
> 	at org.apache.derby.impl.jdbc.TransactionResourceImpl.commit(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedConnection.commit(Unknown Source)
> 	at org.apache.commons.dbcp.DelegatingConnection.commit(DelegatingConnection.java:334)
> 	at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.commit(PoolingDataSource.java:211)
> followed by:
> ------------  BEGIN SHUTDOWN ERROR STACK -------------
> ERROR XSTB0: An exception was thrown during transaction abort.
> 	at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
> 	at org.apache.derby.impl.store.raw.xact.Xact.preComplete(Unknown Source)
> 	at org.apache.derby.impl.store.raw.xact.Xact.abort(Unknown Source)
> 	at org.apache.derby.impl.store.raw.xact.XactContext.cleanupOnError(Unknown Source)
> 	at org.apache.derby.iapi.services.context.ContextManager.cleanupOnError(Unknown Source)
> 	at org.apache.derby.impl.jdbc.TransactionResourceImpl.cleanupOnError(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.EmbedConnection.commit(Unknown Source)
> 	at org.apache.commons.dbcp.DelegatingConnection.commit(DelegatingConnection.java:334)
> 	at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.commit(PoolingDataSource.java:211)
> (...)
> ------------  END SHUTDOWN ERROR STACK -------------

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message