You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by yu...@apache.org on 2013/03/04 20:36:33 UTC
[2/4] git commit: Fix compaction not removing columns when
bf_fp_ratio is 1;
patch by yukim, reviewed by jbellis and pcmanus for CASSANDRA-5182
Fix compaction not removing columns when bf_fp_ratio is 1; patch by yukim, reviewed by jbellis and pcmanus for CASSANDRA-5182
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/6415d6be
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/6415d6be
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/6415d6be
Branch: refs/heads/trunk
Commit: 6415d6bee2815e9267cae002bf873fce8073b347
Parents: b7e1082
Author: Yuki Morishita <yu...@apache.org>
Authored: Tue Feb 5 13:09:06 2013 -0600
Committer: Yuki Morishita <yu...@apache.org>
Committed: Mon Mar 4 13:35:56 2013 -0600
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../db/compaction/CompactionController.java | 12 ++++++++++--
2 files changed, 11 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/6415d6be/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 04dcee7..924eeeb 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -10,6 +10,7 @@
* Handle null values when executing prepared statement (CASSANDRA-5081)
* Add netty to pom dependencies (CASSANDRA-5181)
* Include type arguments in Thrift CQLPreparedResult (CASSANDRA-5311)
+ * Fix compaction not removing columns when bf_fp_ratio is 1 (CASSANDRA-5182)
Merged from 1.1:
* nodetool: ability to repair specific range (CASSANDRA-5280)
* Fix possible assertion triggered in SliceFromReadCommand (CASSANDRA-5284)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/6415d6be/src/java/org/apache/cassandra/db/compaction/CompactionController.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionController.java b/src/java/org/apache/cassandra/db/compaction/CompactionController.java
index ff3de53..f3198ff 100644
--- a/src/java/org/apache/cassandra/db/compaction/CompactionController.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionController.java
@@ -34,6 +34,7 @@ import org.apache.cassandra.io.sstable.SSTableIdentityIterator;
import org.apache.cassandra.io.sstable.SSTableReader;
import org.apache.cassandra.service.CacheService;
import org.apache.cassandra.service.StorageService;
+import org.apache.cassandra.utils.AlwaysPresentFilter;
import org.apache.cassandra.utils.Throttle;
/**
@@ -114,8 +115,15 @@ public class CompactionController
List<SSTableReader> filteredSSTables = overlappingTree.search(key);
for (SSTableReader sstable : filteredSSTables)
{
- if (sstable.getBloomFilter().isPresent(key.key) && sstable.getMinTimestamp() <= maxDeletionTimestamp)
- return false;
+ if (sstable.getMinTimestamp() <= maxDeletionTimestamp)
+ {
+ // if we don't have bloom filter(bf_fp_chance=1.0 or filter file is missing),
+ // we check index file instead.
+ if (sstable.getBloomFilter() instanceof AlwaysPresentFilter && sstable.getPosition(key, SSTableReader.Operator.EQ) != null)
+ return false;
+ else if (sstable.getBloomFilter().isPresent(key.key))
+ return false;
+ }
}
return true;
}