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

Kristian Waagan commented on DERBY-5561:
----------------------------------------

Any updates on this issue?
To me the changes look safe and correct. Given that the Connection interface 
probably won't see much change, and that writing a test that reliably detects 
missing synchronization in future methods (i.e. by using reflection and running 
 a test pattern for each method) may be non-trivial, I suggest we commit the 
patch right away unless Siddharth is planning to write a test for this shortly.

Siddhart, what's your opinion on this?
                
> 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
>            Assignee: Siddharth Srivastava
>              Labels: derby_triage10_9
>         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