From d8f6e3293ac357d03b7c40a9e356133ab1856f0a Mon Sep 17 00:00:00 2001 From: zhangduo Date: Thu, 25 Jun 2015 23:07:33 +0800 Subject: [PATCH] HBASE-13970 NPE during compaction in trunk --- .../hadoop/hbase/regionserver/compactions/Compactor.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/Compactor.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/Compactor.java index 26fef53..af2b545 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/Compactor.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/Compactor.java @@ -23,6 +23,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; +import java.util.concurrent.atomic.AtomicInteger; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -222,6 +223,12 @@ public abstract class Compactor { } /** + * Used to prevent compaction name conflict when multiple compactions running parallel on the + * same store. + */ + private static final AtomicInteger NAME_COUNTER = new AtomicInteger(0); + + /** * Performs the compaction. * @param scanner Where to read from. * @param writer Where to write to. @@ -243,7 +250,8 @@ public abstract class Compactor { lastMillis = EnvironmentEdgeManager.currentTime(); } String compactionName = - store.getRegionInfo().getRegionNameAsString() + "#" + store.getFamily().getNameAsString(); + store.getRegionInfo().getRegionNameAsString() + "#" + store.getFamily().getNameAsString() + + "#" + NAME_COUNTER.getAndIncrement(); long now = 0; boolean hasMore; ScannerContext scannerContext = -- 1.9.1