.../hadoop/hbase/regionserver/StoreFileWriter.java | 17 +++++------------ .../java/org/apache/hadoop/hbase/util/BloomContext.java | 8 ++++---- .../org/apache/hadoop/hbase/util/RowBloomContext.java | 4 ++-- 3 files changed, 11 insertions(+), 18 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileWriter.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileWriter.java index 47a8b25..5bb5612 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileWriter.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileWriter.java @@ -58,9 +58,9 @@ public class StoreFileWriter implements Compactor.CellSink { private final BloomFilterWriter deleteFamilyBloomFilterWriter; private final BloomType bloomType; private long earliestPutTs = HConstants.LATEST_TIMESTAMP; - private Cell lastDeleteFamilyCell = null; private long deleteFamilyCnt = 0; private BloomContext bloomContext = null; + private BloomContext deleteFamilyBloomContext = null; /** * timeRangeTrackerSet is used to figure if we were passed a filled-out TimeRangeTracker or not. @@ -249,18 +249,11 @@ public class StoreFileWriter implements Compactor.CellSink { // increase the number of delete family in the store file deleteFamilyCnt++; - if (null != this.deleteFamilyBloomFilterWriter) { - boolean newKey = true; - if (lastDeleteFamilyCell != null) { - // hbase:meta does not have blooms. So we need not have special interpretation - // of the hbase:meta cells - newKey = !CellUtil.matchingRows(cell, lastDeleteFamilyCell); - } - // TODO : Use bloom context for delete family bloom filter also - if (newKey) { - this.deleteFamilyBloomFilterWriter.add(cell); - this.lastDeleteFamilyCell = cell; + if (this.deleteFamilyBloomFilterWriter != null) { + if (deleteFamilyBloomContext == null) { + deleteFamilyBloomContext = new RowBloomContext(deleteFamilyBloomFilterWriter); } + deleteFamilyBloomContext.writeBloom(cell); } } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/BloomContext.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/BloomContext.java index aab30e0..3f987bc 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/BloomContext.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/BloomContext.java @@ -33,10 +33,10 @@ public abstract class BloomContext { // TODO : Avoid holding references to lastCell protected Cell lastCell; - protected BloomFilterWriter generalBloomFilterWriter; + protected BloomFilterWriter bloomFilterWriter; - public BloomContext(BloomFilterWriter generalBloomFilterWriter) { - this.generalBloomFilterWriter = generalBloomFilterWriter; + public BloomContext(BloomFilterWriter bloomFilterWriter) { + this.bloomFilterWriter = bloomFilterWriter; } public Cell getLastCell() { @@ -50,7 +50,7 @@ public abstract class BloomContext { */ public void writeBloom(Cell cell) throws IOException { if (isNewKey(cell)) { - generalBloomFilterWriter.add(cell); + bloomFilterWriter.add(cell); this.lastCell = cell; } } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RowBloomContext.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RowBloomContext.java index c61e840..f6e36d4 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RowBloomContext.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RowBloomContext.java @@ -31,8 +31,8 @@ import org.apache.hadoop.hbase.regionserver.StoreFile; @InterfaceAudience.Private public class RowBloomContext extends BloomContext { - public RowBloomContext(BloomFilterWriter generalBloomFilterWriter) { - super(generalBloomFilterWriter); + public RowBloomContext(BloomFilterWriter bloomFilterWriter) { + super(bloomFilterWriter); } public void addLastBloomKey(Writer writer) throws IOException {