diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactionPipeline.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactionPipeline.java index 2fd2a14..8c5baf4 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactionPipeline.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CompactionPipeline.java @@ -79,9 +79,9 @@ public class CompactionPipeline { } public List drain() { - int drainSize = pipeline.size(); - List result = new ArrayList(drainSize); synchronized (pipeline){ + int drainSize = pipeline.size(); + List result = new ArrayList(drainSize); version++; for(int i=0; i getScanners(long readPoint, long order) { - List scanners = new ArrayList(this.pipeline.size()); - for (Segment segment : this.pipeline) { - scanners.add(segment.getScanner(readPoint, order)); - // The order is the Segment ordinal - order--; - assert order>=0; // order should never be negative so this is just a sanity check + synchronized (this.pipeline) { + List scanners = new ArrayList(this.pipeline.size()); + // order should never be negative so this is just a sanity check + assert order >= this.pipeline.size(); + for (Segment segment : this.pipeline) { + scanners.add(segment.getScanner(readPoint, order)); + // The order is the Segment ordinal + order--; + } + return scanners; } - return scanners; }