[ 
https://issues.apache.org/jira/browse/DERBY-5561?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Brett Bergquist updated DERBY-5561:
-----------------------------------

    Attachment: DERBY-5561.patch

This patch changes all methods that call "checkForNullPhysicalConnection" to be 
synchronized.  Some of the methods in LogicalConnection.java already were.  
This patch makes all calls consistent and eliminates the race condition.
                
> Race conditions in LogicalConnection checking for a null physical connection
> ----------------------------------------------------------------------------
>
>                 Key: DERBY-5561
>                 URL: https://issues.apache.org/jira/browse/DERBY-5561
>             Project: Derby
>          Issue Type: Bug
>          Components: Network Client
>    Affects Versions: 10.8.2.2
>         Environment: Solaris 10
> Glassfish V2.1.1
> ClientXADataSource connection pool
>            Reporter: Brett Bergquist
>         Attachments: DERBY-5561.patch
>
>
> There are race conditions with checkForNullPhysicalConnection calls in 
> LogicalConnection.  checkForNullPhysicalConnection is not synchronized and it 
> checks for the member "phsyicalConnection" which can be cleared by 
> "nullPhsyicalConnection" (which is synchronized) and "close" (which is 
> synchronized) and "closeWithoutRecyclingToPool" (which is synchronized).
> This affects "nativeSQL", "getAutoCommit", "getTransactionIsolation", 
> "getWarnings", "isReadOnly", "getCatalog", "getTypeMap", "createStatement", 
> "prepareCall", "prepareStatement", "setHoldability", "getHoldability", 
> "setSavePoint", "rollBack", "releaseSavePoint", "getSchema", "setSchema".
> All of these call "checkForNullPhysicalConnection" and then use the member 
> "physicalConnection" after that call returns.  Because these methods are not 
> synchronized, between the time "checkForNullPhysicalConnectoin" returns and 
> "physicalConnection" is used, the "physicalConnection" member could be set to 
> null and then a NPE occurs.
> Probably all of these methods should be changed to synchronized.

--
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