You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2013/01/07 16:40:32 UTC

[1/3] git commit: disallow bloom filter false positive chance of 0 patch by jbellis and brandonwilliams for CASSANDRA-5013

disallow bloom filter false positive chance of 0
patch by jbellis and brandonwilliams for CASSANDRA-5013


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/dac6048c
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/dac6048c
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/dac6048c

Branch: refs/heads/cassandra-1.2
Commit: dac6048c50a8dff0b4522c669c2f7115876483eb
Parents: 3d787b7
Author: Jonathan Ellis <jb...@apache.org>
Authored: Fri Jan 4 12:16:33 2013 -0600
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Mon Jan 7 09:36:41 2013 -0600

----------------------------------------------------------------------
 CHANGES.txt                                        |    1 +
 .../org/apache/cassandra/config/CFMetaData.java    |    6 +++++-
 .../apache/cassandra/io/sstable/SSTableWriter.java |   10 +---------
 3 files changed, 7 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/dac6048c/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 95aad22..78643d5 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 1.2.1
+ * disallow bloom filter false positive chance of 0 (CASSANDRA-5013)
  * add threadpool size adjustment methods to JMXEnabledThreadPoolExecutor and 
    CompactionManagerMBean (CASSANDRA-5044)
  * Improve handling a changing target throttle rate mid-compaction (CASSANDRA-5087)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/dac6048c/src/java/org/apache/cassandra/config/CFMetaData.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/config/CFMetaData.java b/src/java/org/apache/cassandra/config/CFMetaData.java
index 3a2e2b6..5f6c1fe 100644
--- a/src/java/org/apache/cassandra/config/CFMetaData.java
+++ b/src/java/org/apache/cassandra/config/CFMetaData.java
@@ -536,7 +536,8 @@ public final class CFMetaData
 
     public double getBloomFilterFpChance()
     {
-        return bloomFilterFpChance == null
+        // we disallow bFFPC==null starting in 1.2.1 but tolerated it before that
+        return (bloomFilterFpChance == null || bloomFilterFpChance == 0)
                ? compactionStrategyClass == LeveledCompactionStrategy.class ? 0.1 : 0.01
                : bloomFilterFpChance;
     }
@@ -1125,6 +1126,9 @@ public final class CFMetaData
 
         validateCompactionThresholds();
 
+        if (bloomFilterFpChance != null && bloomFilterFpChance == 0)
+            throw new ConfigurationException("Zero false positives is impossible; bloom filter false positive chance bffpc must be 0 < bffpc <= 1");
+
         return this;
     }
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/dac6048c/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java b/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java
index a3a8fe9..f578064 100644
--- a/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java
+++ b/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java
@@ -442,15 +442,7 @@ public class SSTableWriter extends SSTable
                                               !DatabaseDescriptor.populateIOCacheOnFlush());
             builder = SegmentedFile.getBuilder(DatabaseDescriptor.getIndexAccessMode());
             summary = new IndexSummary(keyCount);
-
-            double fpChance = metadata.getBloomFilterFpChance();
-            if (fpChance == 0)
-            {
-                // paranoia -- we've had bugs in the thrift <-> avro <-> CfDef dance before, let's not let that break things
-                logger.error("Bloom filter FP chance of zero isn't supposed to happen");
-                fpChance = 0.01;
-            }
-            bf = FilterFactory.getFilter(keyCount, fpChance, true);
+            bf = FilterFactory.getFilter(keyCount, metadata.getBloomFilterFpChance(), true);
         }
 
         public void append(DecoratedKey key, RowIndexEntry indexEntry)