Return-Path: X-Original-To: apmail-hbase-issues-archive@www.apache.org Delivered-To: apmail-hbase-issues-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 8F63417960 for ; Sun, 29 Mar 2015 09:05:53 +0000 (UTC) Received: (qmail 4290 invoked by uid 500); 29 Mar 2015 09:05:53 -0000 Delivered-To: apmail-hbase-issues-archive@hbase.apache.org Received: (qmail 4244 invoked by uid 500); 29 Mar 2015 09:05:53 -0000 Mailing-List: contact issues-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list issues@hbase.apache.org Received: (qmail 4233 invoked by uid 99); 29 Mar 2015 09:05:53 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 29 Mar 2015 09:05:53 +0000 Date: Sun, 29 Mar 2015 09:05:53 +0000 (UTC) From: "zhangduo (JIRA)" To: issues@hbase.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (HBASE-13301) Possible memory leak in BucketCache MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/HBASE-13301?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14385682#comment-14385682 ] zhangduo commented on HBASE-13301: ---------------------------------- {quote} In btw a context switch t1 completed the caching and done evict and again cached same block.. This seems rarest of rare case. {quote} Agree. But HBase is a long running service, small probability events always occur if we keep it running long enough... Let me revisit the whole read write path in regionserver which relates to BlockCache and give a clear locking schema first. Then it is easier to say if the situation in this testcase could happen. Will come back later. Thanks. > 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 > Attachments: HBASE-13301-testcase.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)