[
https://issues.apache.org/jira/browse/HBASE-1927?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12768765#action_12768765
]
stack commented on HBASE-1927:
------------------------------
+1 for branch and trunk. Thanks Erik for the fix.
> Scanners not closed properly in certain circumstances (memory leak)
> -------------------------------------------------------------------
>
> Key: HBASE-1927
> URL: https://issues.apache.org/jira/browse/HBASE-1927
> Project: Hadoop HBase
> Issue Type: Bug
> Components: regionserver
> Affects Versions: 0.20.1
> Reporter: Erik Rozendaal
> Assignee: Jonathan Gray
> Fix For: 0.20.2, 0.21.0
>
> Attachments: HBASE-1927-v1.patch
>
>
> Scanners are sometimes leaked by the KeyValueHeap class. The constructor adds
> each scanner to a heap, but only if the scanner's peek() method returns not
> null (line 58). Otherwise the scanner is dropped without being closed.
> Unfortunately some scanners (like StoreScanner and MemStoreScanner) register
> themselves to some global list when constructed and only deregister on
> close(). This can cause a memory leak, for example with MemStoreScanners on
> an empty memory store.
> The quick fix is to add an else clause to the if on line 58:
> } else {
> scanner.close()
> }
> The root cause is that ownership of the scanners is transferred from the
> caller to the KeyValueHeap on construction. Maybe this should be made clear
> in the documentation or changed.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.