You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2009/01/20 07:37:29 UTC
svn commit: r735947 - in /hadoop/hbase/trunk: CHANGES.txt
src/java/org/onelab/filter/HashFunction.java
src/test/org/onelab/test/TestFilter.java
Author: stack
Date: Mon Jan 19 22:37:29 2009
New Revision: 735947
URL: http://svn.apache.org/viewvc?rev=735947&view=rev
Log:
HBASE-1134 HashFunction inadvertently destroys some randomness
Modified:
hadoop/hbase/trunk/CHANGES.txt
hadoop/hbase/trunk/src/java/org/onelab/filter/HashFunction.java
hadoop/hbase/trunk/src/test/org/onelab/test/TestFilter.java
Modified: hadoop/hbase/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/CHANGES.txt?rev=735947&r1=735946&r2=735947&view=diff
==============================================================================
--- hadoop/hbase/trunk/CHANGES.txt (original)
+++ hadoop/hbase/trunk/CHANGES.txt Mon Jan 19 22:37:29 2009
@@ -5,6 +5,8 @@
BUG FIXES
HBASE-1140 "ant clean test" fails (Nitay Joffe via Stack)
HBASE-1129 Master won't go down; stuck joined on rootScanner
+ HBASE-1136 HashFunction inadvertently destroys some randomness
+ (Jonathan Ellis via Stack)
IMPROVEMENTS
HBASE-1089 Add count of regions on filesystem to master UI; add percentage
Modified: hadoop/hbase/trunk/src/java/org/onelab/filter/HashFunction.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/onelab/filter/HashFunction.java?rev=735947&r1=735946&r2=735947&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/onelab/filter/HashFunction.java (original)
+++ hadoop/hbase/trunk/src/java/org/onelab/filter/HashFunction.java Mon Jan 19 22:37:29 2009
@@ -118,7 +118,8 @@
}
int[] result = new int[nbHash];
for (int i = 0, initval = 0; i < nbHash; i++) {
- initval = result[i] = Math.abs(hashFunction.hash(b, initval) % maxValue);
+ initval = hashFunction.hash(b, initval);
+ result[i] = Math.abs(initval) % maxValue;
}
return result;
}//end hash()
Modified: hadoop/hbase/trunk/src/test/org/onelab/test/TestFilter.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/test/org/onelab/test/TestFilter.java?rev=735947&r1=735946&r2=735947&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/test/org/onelab/test/TestFilter.java (original)
+++ hadoop/hbase/trunk/src/test/org/onelab/test/TestFilter.java Mon Jan 19 22:37:29 2009
@@ -266,7 +266,7 @@
* @throws UnsupportedEncodingException
*/
public void testCountingBloomFilter() throws UnsupportedEncodingException {
- Filter bf = new CountingBloomFilter(8, 2, Hash.JENKINS_HASH);
+ Filter bf = new CountingBloomFilter(128, 2, Hash.JENKINS_HASH);
Key key = new StringKey("toto");
Key k2 = new StringKey("lulu");
Key k3 = new StringKey("mama");
@@ -274,7 +274,6 @@
bf.add(k2);
bf.add(k3);
assertTrue(bf.membershipTest(key));
- assertTrue(bf.membershipTest(new StringKey("graknyl")));
assertFalse(bf.membershipTest(new StringKey("xyzzy")));
assertFalse(bf.membershipTest(new StringKey("abcd")));
@@ -282,15 +281,6 @@
((CountingBloomFilter)bf).delete(key);
assertFalse(bf.membershipTest(key));
- // OR 'key' back into the filter
- Filter bf2 = new CountingBloomFilter(8, 2, Hash.JENKINS_HASH);
- bf2.add(key);
- bf.or(bf2);
- assertTrue(bf.membershipTest(key));
- assertTrue(bf.membershipTest(new StringKey("graknyl")));
- assertFalse(bf.membershipTest(new StringKey("xyzzy")));
- assertFalse(bf.membershipTest(new StringKey("abcd")));
-
// to test for overflows, add 'key' enough times to overflow a 4bit bucket,
// while asserting that it stays a member
for(int i = 0; i < 16; i++){
@@ -319,7 +309,7 @@
* @throws UnsupportedEncodingException
*/
public void testDynamicBloomFilter() throws UnsupportedEncodingException {
- Filter bf = new DynamicBloomFilter(8, 2, Hash.JENKINS_HASH, 2);
+ Filter bf = new DynamicBloomFilter(128, 2, Hash.JENKINS_HASH, 2);
Key key = new StringKey("toto");
Key k2 = new StringKey("lulu");
Key k3 = new StringKey("mama");
@@ -327,7 +317,6 @@
bf.add(k2);
bf.add(k3);
assertTrue(bf.membershipTest(key));
- assertTrue(bf.membershipTest(new StringKey("graknyl")));
assertFalse(bf.membershipTest(new StringKey("xyzzy")));
assertFalse(bf.membershipTest(new StringKey("abcd")));
}