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

John Vines commented on ACCUMULO-587:
-------------------------------------

finalize() gets called when garbage collection is about to be performed on the 
object. Unfortunately, I don't believe that garbage collection will ever occur 
on a non-closed Reader, because the threadpool existence would prevent garbage 
collection. This is the same deal with the BatchWriter. While putting in a 
finalize() would not actually cause harm in the code, I worry that it would 
lead users to believe they do not need to call close() to free up the resources 
involved.
                
> Add finalize to TabletServerBatchReader to catch when user forgets to close
> ---------------------------------------------------------------------------
>
>                 Key: ACCUMULO-587
>                 URL: https://issues.apache.org/jira/browse/ACCUMULO-587
>             Project: Accumulo
>          Issue Type: Improvement
>          Components: client
>            Reporter: Dennis Patrone
>            Assignee: Billie Rinaldi
>            Priority: Trivial
>
> If a client forgets to close a BatchScanner or BatchDeleter, threads are 
> leaked in the TabletServerBatchReader implementation.  It would be nice if a 
> finalize method were added to check and warn the user of such a problem. The 
> thread pool appeared to only be shared with the 
> TabletServerBatchReaderIterator, which maintains a reference to the 
> TabletServerBatchReader itself.  So AFAICT if the TabletServerBatchReader is 
> eligible for garbage collection, there can be no client references to that 
> scanner or any iterators it created (i.e., it _should_ have been closed).
> For example:
> {code}
> protected void finalize() {
>    if (!queryThreadPool.isShutdown()) {
>       // add a logger reference in class initialization
>       log.warn("TabletServerBatchReader not shutdown; did you forget to call 
> close()?");
>       close();
>    }
> }
> {code}
> The same might be true for the TabletServerBatchWriter (it has a close), but 
> I didn't look into that class.

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