Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id C622A200B9F for ; Mon, 26 Sep 2016 18:54:22 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id C4B8A160ACA; Mon, 26 Sep 2016 16:54:22 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 1CC69160AE3 for ; Mon, 26 Sep 2016 18:54:21 +0200 (CEST) Received: (qmail 8855 invoked by uid 500); 26 Sep 2016 16:54:21 -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 8656 invoked by uid 99); 26 Sep 2016 16:54:20 -0000 Received: from arcas.apache.org (HELO arcas) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 26 Sep 2016 16:54:20 +0000 Received: from arcas.apache.org (localhost [127.0.0.1]) by arcas (Postfix) with ESMTP id BA3222C2A6C for ; Mon, 26 Sep 2016 16:54:20 +0000 (UTC) Date: Mon, 26 Sep 2016 16:54:20 +0000 (UTC) From: "ramkrishna.s.vasudevan (JIRA)" To: issues@hbase.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (HBASE-16643) Reverse scanner heap creation may not allow MSLAB closure due to improper ref counting of segments MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 archived-at: Mon, 26 Sep 2016 16:54:22 -0000 [ https://issues.apache.org/jira/browse/HBASE-16643?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15523588#comment-15523588 ] ramkrishna.s.vasudevan commented on HBASE-16643: ------------------------------------------------ All the above tests are passing locally. Can I get a +1 here? I have addressed the comments. here. TestBlockEvictionClient is being tracked seperately. > Reverse scanner heap creation may not allow MSLAB closure due to improper ref counting of segments > -------------------------------------------------------------------------------------------------- > > Key: HBASE-16643 > URL: https://issues.apache.org/jira/browse/HBASE-16643 > Project: HBase > Issue Type: Bug > Reporter: ramkrishna.s.vasudevan > Assignee: ramkrishna.s.vasudevan > Priority: Critical > Fix For: 2.0.0 > > Attachments: HBASE-16643.patch, HBASE-16643_1.patch, HBASE-16643_2.patch, HBASE-16643_3.patch, HBASE-16643_4.patch, HBASE-16643_5.patch, HBASE-16643_6.patch, HBASE-16643_7.patch > > > In the reverse scanner case, > While doing 'initBackwardHeapIfNeeded' in MemstoreScanner for setting the backward heap, we do a > {code} > if ((backwardHeap == null) && (forwardHeap != null)) { > forwardHeap.close(); > forwardHeap = null; > // before building the heap seek for the relevant key on the scanners, > // for the heap to be built from the scanners correctly > for (KeyValueScanner scan : scanners) { > if (toLast) { > res |= scan.seekToLastRow(); > } else { > res |= scan.backwardSeek(cell); > } > } > {code} > forwardHeap.close(). This would internally decrement the MSLAB ref counter for the current active segment and snapshot segment. > When the scan is actually closed again we do close() and that will again decrement the count. Here chances are there that the count would go negative and hence the actual MSLAB closure that checks for refCount==0 will fail. Apart from this, when the refCount becomes 0 after the firstClose if any other thread requests to close the segment, then we will end up in corrupted segment because the segment could be put back to the MSLAB pool. -- This message was sent by Atlassian JIRA (v6.3.4#6332)