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
Fix For: 0.20.2
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.