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

Bryan Pendleton commented on DERBY-5560:
----------------------------------------

Your approach seems reasonable to me, thanks for the clear explanation.

I think it would be worth adding some comments to the class-level comments for
the two classes, to note the locking order convention we've adopted.

How could we improve our test suite in this area, to make it more likely that
problems like these would show up during development testing, rather than
in production applications? Do you have any time to try to improve the tests?

                
> Java deadlock between LogicalConnection40 and ClientXAConnection40
> ------------------------------------------------------------------
>
>                 Key: DERBY-5560
>                 URL: https://issues.apache.org/jira/browse/DERBY-5560
>             Project: Derby
>          Issue Type: Bug
>          Components: Network Client
>    Affects Versions: 10.8.2.2
>         Environment: Solaris 10
> Glassfish V2.1.1 
> ClientXADataSource connection pool setup to close all connections on any error
>            Reporter: Brett Bergquist
>         Attachments: DERBY-5560.patch
>
>
> There is a Java deadlock between LogicalConnection40 and 
> ClientXAConnection40.  The order of calls that cause the deadlock are:
> Thread 1
> ----
> LogicalConnection.close
> ClientPooledConnection.recycleConnection
> Thread 2
> ----
> ClientPooledConnection.close
> LogicalConnection.nullPhysicalConnection
> Thread 1 acquires a lock on the LogicalConnection and attempts to acquire a 
> lock on the ClientPooledConnection
> Thread 2 acquires a lock on the ClientPooledConnection and attempts to 
> acquire a lock on the LogicalConnection
> In production this occurs when one thread is committing a transaction and 
> another thread is trying to close the connection.  This occurred because the 
> Glassfish connection pool is setup to close all connections on any error on 
> any connection and an error has been detected on another connection in the 
> pool.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to