[ https://issues.apache.org/jira/browse/ACCUMULO-3555?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14303644#comment-14303644 ]
Dave Marion commented on ACCUMULO-3555: --------------------------------------- The reference to the TSBR is passed to the TSBRI, but it then copied in the constructor and discarded. If it was not a copy, then in next() when hasNext() is false, you could call close() on the reference. I would suggest that most of the examples so far are basic and could be covered with a try-with-resources statement. I would also say that there are more advanced uses of BatchScanner in which you don't want it to AUTOCLOSE. I have not looked through the code enough, but maybe if the BatchScanner were created like the following, then you could use the logic I mentioned above. {code} BatchScanner bs = conn.createBatchScanner(tableName, Authorizations.EMPTY, 4, BatchScanner.AUTOCLOSE); {code} > TabletServerBatchReaderIterator doesn't maintain reference to > TabletServerBatchReader > ------------------------------------------------------------------------------------- > > Key: ACCUMULO-3555 > URL: https://issues.apache.org/jira/browse/ACCUMULO-3555 > Project: Accumulo > Issue Type: Bug > Components: client > Affects Versions: 1.5.0, 1.5.1, 1.5.2, 1.6.0, 1.6.1 > Reporter: Josh Elser > Assignee: Josh Elser > Priority: Blocker > > Had a user in IRC run into this again today upgrading a 1.4 instance to 1.6.0. > ACCUMULO-587 introduced a {{finalize}} implementation into > {{TabletServerBatchReader}} in an attempt to close the {{BatchScanner}} when > the user might have forgotten to do so themselves. The problem, however, is > that the {{TabletServerBatchReaderIterator}} doesn't maintain a reference to > the {{TabletServerBatchReader}} (notice how it only uses it to create a new > instnace of {{ScannerOptions}} using the copy constructor). > In other words, when the {{TabletServerBatchReaderIterator}} is constructed, > it has no references in the object graph to the {{TabletServerBatchReader}} > it was created from. This means that if clients don't hold onto the > BatchScanner instance, it's possible that it gets closed by the JVM calling > {{finalize()}}. -- This message was sent by Atlassian JIRA (v6.3.4#6332)