HBASE-19728 Add lock to filesCompacting in all place.
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/f7faad04 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/f7faad04 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/f7faad04 Branch: refs/heads/HBASE-19064 Commit: f7faad0477d66de1e9d89a00fe9c4d8b0b80f198 Parents: 08bcd64 Author: binlijin <binli...@gmail.com> Authored: Wed Jan 31 14:05:30 2018 +0800 Committer: binlijin <binli...@gmail.com> Committed: Wed Jan 31 14:05:30 2018 +0800 ---------------------------------------------------------------------- .../java/org/apache/hadoop/hbase/regionserver/HStore.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/f7faad04/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java ---------------------------------------------------------------------- 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 f228d44..b00758f 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 @@ -1451,7 +1451,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(); } @@ -2306,7 +2308,11 @@ public class HStore implements Store, HeapSize, StoreConfigInformation, Propagat @Override public boolean needsCompaction() { - return this.storeEngine.needsCompaction(this.filesCompacting); + List<HStoreFile> filesCompactingClone = null; + synchronized (filesCompacting) { + filesCompactingClone = Lists.newArrayList(filesCompacting); + } + return this.storeEngine.needsCompaction(filesCompactingClone); } /**