From ae9ec3d64f027362c5d01b063f2e5a4c87a4214f Mon Sep 17 00:00:00 2001 From: Andrew Purtell Date: Mon, 10 Nov 2014 15:46:33 -0800 Subject: [PATCH] HBASE-12454 Setting didPerformCompaction early in HRegion#compact --- .../java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java | 4 +++- .../src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java | 2 +- .../java/org/apache/hadoop/hbase/regionserver/TestCompaction.java | 3 +++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java index d9a9a84..4a22940 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java @@ -556,7 +556,9 @@ public class CompactSplitThread implements CompactionRequestor, PropagatingConfi if (runnable instanceof CompactionRunner) { CompactionRunner runner = (CompactionRunner)runnable; LOG.debug("Compaction Rejected: " + runner); - runner.store.cancelRequestedCompaction(runner.compaction); + if (runner.compaction != null) { + runner.store.cancelRequestedCompaction(runner.compaction); + } } } } diff --git 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 index fbf151a..0e093ea 100644 --- 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 @@ -1565,8 +1565,8 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver { // 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); diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompaction.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompaction.java index 4900ef4..34b88c2 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompaction.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompaction.java @@ -161,6 +161,9 @@ public class TestCompaction { }).when(spyR).doRegionCompactionPrep(); // force a minor compaction, but not before requesting a stop + + // Accounting: Normally compaction requests go through HStore#requestCompaction + spyR.reportCompactionRequestStart(false); spyR.compactStores(); // ensure that the compaction stopped, all old files are intact, -- 1.7.12.4 (Apple Git-37)