From cebbfbc1a56509237f15daad7390fa8c587628c9 Mon Sep 17 00:00:00 2001 From: Andrew Purtell Date: Tue, 11 Nov 2014 14:34:31 -0800 Subject: [PATCH] HBASE-12454 Setting didPerformCompaction early in HRegion#compact --- .../src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java | 2 +- .../src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java | 4 +++- .../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/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/main/java/org/apache/hadoop/hbase/regionserver/HStore.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java index 8b41401..16c797c 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java @@ -1544,7 +1544,9 @@ public class HStore implements Store { @Override public void cancelRequestedCompaction(CompactionContext compaction) { - finishCompactionRequest(compaction.getRequest()); + if (compaction != null) { + finishCompactionRequest(compaction.getRequest()); + } } private void finishCompactionRequest(CompactionRequest cr) { 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)