[ 
https://issues.apache.org/jira/browse/HBASE-13301?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

zhangduo updated HBASE-13301:
-----------------------------
    Attachment: HBASE-13301_v2.patch

Remove compareTo and equals methods, use a COMPARATOR instead.
Change 'accessTime' to 'accessCounter' since it is always assigned by 
'accessCount.incrementAndGet' which is not the actual time. 'accessTime' makes 
people confuse why accessTime equals means object equals in compare methods.

> Possible memory leak in BucketCache
> -----------------------------------
>
>                 Key: HBASE-13301
>                 URL: https://issues.apache.org/jira/browse/HBASE-13301
>             Project: HBase
>          Issue Type: Bug
>          Components: BlockCache
>            Reporter: zhangduo
>            Assignee: zhangduo
>             Fix For: 2.0.0, 1.1.0, 0.98.13, 1.0.2
>
>         Attachments: HBASE-13301-testcase.patch, 
> HBASE-13301-testcase_v1.patch, HBASE-13301.patch, HBASE-13301_v1.patch, 
> HBASE-13301_v2.patch
>
>
> {code:title=BucketCache.java}
> public boolean evictBlock(BlockCacheKey cacheKey) {
>       ...
>       if (bucketEntry.equals(backingMap.remove(cacheKey))) {
>         bucketAllocator.freeBlock(bucketEntry.offset());
>         realCacheSize.addAndGet(-1 * bucketEntry.getLength());
>         blocksByHFile.remove(cacheKey.getHfileName(), cacheKey);
>         if (removedBlock == null) {
>           this.blockNumber.decrementAndGet();
>         }
>       } else {
>         return false;
>       }
>       ...
> {code}
> I think the problem is here. We remove a BucketEntry that should not be 
> removed by us, but we do not put it back and also do not do any clean up.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to