You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ji...@apache.org on 2008/08/28 20:29:11 UTC

svn commit: r689925 - in /hadoop/hbase/branches/0.2: CHANGES.txt src/java/org/onelab/filter/DynamicBloomFilter.java src/java/org/onelab/filter/Key.java

Author: jimk
Date: Thu Aug 28 11:29:10 2008
New Revision: 689925

URL: http://svn.apache.org/viewvc?rev=689925&view=rev
Log:
HBASE-552   Bloom filter bugs (Andrzej Bialecki via Jim Kellerman)

Modified:
    hadoop/hbase/branches/0.2/CHANGES.txt
    hadoop/hbase/branches/0.2/src/java/org/onelab/filter/DynamicBloomFilter.java
    hadoop/hbase/branches/0.2/src/java/org/onelab/filter/Key.java

Modified: hadoop/hbase/branches/0.2/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hbase/branches/0.2/CHANGES.txt?rev=689925&r1=689924&r2=689925&view=diff
==============================================================================
--- hadoop/hbase/branches/0.2/CHANGES.txt (original)
+++ hadoop/hbase/branches/0.2/CHANGES.txt Thu Aug 28 11:29:10 2008
@@ -35,6 +35,7 @@
                Kellerman)
    HBASE-843   Deleting and recreating a table in a single process does not work
                (Jonathan Gray via Jim Kellerman)
+   HBASE-552   Bloom filter bugs (Andrzej Bialecki via Jim Kellerman)
 
   IMPROVEMENTS
    HBASE-801  When a table haven't disable, shell could response in a "user

Modified: hadoop/hbase/branches/0.2/src/java/org/onelab/filter/DynamicBloomFilter.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/branches/0.2/src/java/org/onelab/filter/DynamicBloomFilter.java?rev=689925&r1=689924&r2=689925&view=diff
==============================================================================
--- hadoop/hbase/branches/0.2/src/java/org/onelab/filter/DynamicBloomFilter.java (original)
+++ hadoop/hbase/branches/0.2/src/java/org/onelab/filter/DynamicBloomFilter.java Thu Aug 28 11:29:10 2008
@@ -88,17 +88,22 @@
   /** 
    * Threshold for the maximum number of key to record in a dynamic Bloom filter row.
    */
-  int nr;
+  private int nr;
 
   /**
    * The number of keys recorded in the current standard active Bloom filter.
    */
-  int currentNbRecord;
+  private int currentNbRecord;
 
   /**
    * The matrix of Bloom filter.
    */
-  BloomFilter[] matrix;
+  private BloomFilter[] matrix;
+
+  /**
+   * Zero-args constructor for the serialization.
+   */
+  public DynamicBloomFilter() { }
 
   /**
    * Constructor.
@@ -253,7 +258,10 @@
   @Override
   public void write(DataOutput out) throws IOException {
     super.write(out);
-    for(int i = 0; i < matrix.length; i++) {
+    out.writeInt(nr);
+    out.writeInt(currentNbRecord);
+    out.writeInt(matrix.length);
+    for (int i = 0; i < matrix.length; i++) {
       matrix[i].write(out);
     }
   }
@@ -262,8 +270,12 @@
   @Override
   public void readFields(DataInput in) throws IOException {
     super.readFields(in);
-    matrix = new BloomFilter[vectorSize];
-    for(int i = 0; i < matrix.length; i++) {
+    nr = in.readInt();
+    currentNbRecord = in.readInt();
+    int len = in.readInt();
+    matrix = new BloomFilter[len];
+    for (int i = 0; i < matrix.length; i++) {
+      matrix[i] = new BloomFilter();
       matrix[i].readFields(in);
     }
   }

Modified: hadoop/hbase/branches/0.2/src/java/org/onelab/filter/Key.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/branches/0.2/src/java/org/onelab/filter/Key.java?rev=689925&r1=689924&r2=689925&view=diff
==============================================================================
--- hadoop/hbase/branches/0.2/src/java/org/onelab/filter/Key.java (original)
+++ hadoop/hbase/branches/0.2/src/java/org/onelab/filter/Key.java Thu Aug 28 11:29:10 2008
@@ -91,13 +91,17 @@
    * @param weight The weight associated to <i>this</i> key.
    */
   public Key(byte[] value, double weight) {
+    set(value, weight);
+  }//end constructor
+
+  public void set(byte[] value, double weight) {
     if(value == null) {
       throw new IllegalArgumentException("value can not be null");
     }
     this.bytes = value;
     this.weight = weight;
-  }//end constructor
-
+  }
+  
   /** @return byte[] The value of <i>this</i> key. */
   public byte[] getBytes() {
     return this.bytes;