[ 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