[ http://issues.apache.org/jira/browse/DERBY-1021?page=all ]
     
Deepa Remesh closed DERBY-1021:
-------------------------------

    Fix Version: 10.2.0.0
     Resolution: Fixed

This issue has been partly resolved by check-ins for DERBY-1103. A new sub-task 
(DERBY-1104) is opened for further work.

> Perform cleanup actions which require synchronization outside the finalizer
> ---------------------------------------------------------------------------
>
>          Key: DERBY-1021
>          URL: http://issues.apache.org/jira/browse/DERBY-1021
>      Project: Derby
>         Type: Bug
>   Components: Network Client
>  Environment: Derby Network Client Driver
>     Reporter: Deepa Remesh
>      Fix For: 10.2.0.0

>
> In client driver, finalize() method in Statement class involves synchronized 
> calls. This may block the finalizer thread and potentially the JVM. In 
> general, avoid any synchronized operation from finalizer. Embedded driver 
> performs the cleanup actions outside the finalizer. See 
> EmbedPreparedStatement.finalize. A similar mechanism needs to be used in 
> client driver. 
> The existing code in client's finalize() methods do not cause any problems so 
> far because finalize was getting called only after explicit close of 
> statement objects. So the code in the finalizer does not get exercised. Once 
> the memory leaks are removed as part of DERBY-210 
> (https://issues.apache.org/jira/browse/DERBY-210), the finalizer can get 
> called as soon as the application dereferences a statement object.
> To be able to proceed with DERBY-210, patch4 in DERBY-210 changes the 
> finalizer method to not do any synchronized actions. It removes sending of 
> any network messages from finalizer:
> 1) Removes sending commit messages to network server
> 2) Removes sending CLSQRY to cleanup all result sets of a statement on 
> network server since the cleanup of result sets on network server will happen 
> when a statement is re-used. 
> Kathey pointed out some scenarios and said that we still need to do 2) - we 
> need to send CLSQRY for all result sets of a statement when the statement is 
> finalized. Sending CLSQRY command needs to be synchronized. Hence, we need to 
> implement a mechanism similar to what is done in embedded driver finalizers.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to