Dennis Patrone created ACCUMULO-587:
---------------------------------------
Summary: 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