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 2ccc8a0..f83b5c8 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 @@ -1449,7 +1449,9 @@ public class HStore implements Store, HeapSize, StoreConfigInformation, Propagat this.lock.writeLock().lock(); try { this.storeEngine.getStoreFileManager().addCompactionResults(compactedFiles, result); - filesCompacting.removeAll(compactedFiles); // safe bc: lock.writeLock(); + synchronized (filesCompacting) { + filesCompacting.removeAll(compactedFiles); + } } finally { this.lock.writeLock().unlock(); } @@ -2301,7 +2303,11 @@ public class HStore implements Store, HeapSize, StoreConfigInformation, Propagat @Override public boolean needsCompaction() { - return this.storeEngine.needsCompaction(this.filesCompacting); + List filesCompactingClone = null; + synchronized (filesCompacting) { + filesCompactingClone = Lists.newArrayList(filesCompacting); + } + return this.storeEngine.needsCompaction(filesCompactingClone); } /**