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


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