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 2370DC907 for ; Wed, 12 Nov 2014 19:56:35 +0000 (UTC) Received: (qmail 71022 invoked by uid 500); 12 Nov 2014 19:56:34 -0000 Delivered-To: apmail-hbase-issues-archive@hbase.apache.org Received: (qmail 70970 invoked by uid 500); 12 Nov 2014 19:56:34 -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 70958 invoked by uid 99); 12 Nov 2014 19:56:34 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 12 Nov 2014 19:56:34 +0000 Date: Wed, 12 Nov 2014 19:56:34 +0000 (UTC) From: "Lars Hofhansl (JIRA)" To: issues@hbase.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (HBASE-12454) Setting didPerformCompaction early in HRegion#compact 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-12454?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14208569#comment-14208569 ] Lars Hofhansl commented on HBASE-12454: --------------------------------------- Did you mean to commit this? It's not right. The previous logic was correct, just the variables/methods were named strangely. > Setting didPerformCompaction early in HRegion#compact > ----------------------------------------------------- > > Key: HBASE-12454 > URL: https://issues.apache.org/jira/browse/HBASE-12454 > Project: HBase > Issue Type: Bug > Affects Versions: 0.98.8 > Reporter: Andrew Purtell > Assignee: Andrew Purtell > Priority: Minor > Fix For: 2.0.0, 0.98.8, 0.99.2 > > Attachments: HBASE-12454-0.98.patch, HBASE-12454.patch, HBASE-12454.patch, HBASE-12454.patch > > > It appears we are setting 'didPerformCompaction' to "true" before attempting the compaction in HRegion#compact. If Store#compact throws an exception or is interrupted, we won't call Store#cancelRequestedCompaction in the last finally block of the method as it looks like we should. > {code} > --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java > +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java > @@ -1540,58 +1540,58 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver { > return false; > } > > status = TaskMonitor.get().createStatus("Compacting " + store + " in " + this); > if (this.closed.get()) { > String msg = "Skipping compaction on " + this + " because closed"; > LOG.debug(msg); > status.abort(msg); > return false; > } > boolean wasStateSet = false; > try { > synchronized (writestate) { > if (writestate.writesEnabled) { > wasStateSet = true; > ++writestate.compacting; > } else { > String msg = "NOT compacting region " + this + ". Writes disabled."; > LOG.info(msg); > status.abort(msg); > return false; > } > } > LOG.info("Starting compaction on " + store + " in region " + this > + (compaction.getRequest().isOffPeak()?" as an off-peak compaction":"")); > doRegionCompactionPrep(); > try { > status.setStatus("Compacting store " + store); > - didPerformCompaction = true; > store.compact(compaction); > + didPerformCompaction = true; > } catch (InterruptedIOException iioe) { > String msg = "compaction interrupted"; > LOG.info(msg, iioe); > status.abort(msg); > return false; > } > } finally { > if (wasStateSet) { > synchronized (writestate) { > --writestate.compacting; > if (writestate.compacting <= 0) { > writestate.notifyAll(); > } > } > } > } > status.markComplete("Compaction complete"); > return true; > } finally { > try { > if (!didPerformCompaction) store.cancelRequestedCompaction(compaction); <----- > if (status != null) status.cleanup(); > } finally { > lock.readLock().unlock(); > } > } > }{code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)