Author: j16sdiz
Date: 2008-07-09 08:43:31 +0000 (Wed, 09 Jul 2008)
New Revision: 21009
Modified:
branches/saltedhashstore/freenet/src/freenet/store/saltedhash/SaltedHashFreenetStore.java
branches/saltedhashstore/freenet/src/freenet/support/BloomFilter.java
Log:
allow changing K in bloom filter
Modified:
branches/saltedhashstore/freenet/src/freenet/store/saltedhash/SaltedHashFreenetStore.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/store/saltedhash/SaltedHashFreenetStore.java
2008-07-09 08:43:04 UTC (rev 21008)
+++
branches/saltedhashstore/freenet/src/freenet/store/saltedhash/SaltedHashFreenetStore.java
2008-07-09 08:43:31 UTC (rev 21009)
@@ -892,7 +892,7 @@
configLock.writeLock().lock();
try {
generation++;
- bloomFilter.fork();
+ bloomFilter.fork(BLOOM_FILTER_K);
keyCount.set(0);
} finally {
configLock.writeLock().unlock();
@@ -982,7 +982,7 @@
configLock.writeLock().lock();
try {
generation++;
- bloomFilter.fork();
+ bloomFilter.fork(BLOOM_FILTER_K);
keyCount.set(0);
} finally {
configLock.writeLock().unlock();
Modified: branches/saltedhashstore/freenet/src/freenet/support/BloomFilter.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/support/BloomFilter.java
2008-07-09 08:43:04 UTC (rev 21008)
+++ branches/saltedhashstore/freenet/src/freenet/support/BloomFilter.java
2008-07-09 08:43:31 UTC (rev 21009)
@@ -70,6 +70,9 @@
} finally {
lock.writeLock().unlock();
}
+
+ if (forkedFilter != null)
+ forkedFilter.updateFilter(key);
}
public boolean checkFilter(byte[] key) {
@@ -116,10 +119,6 @@
byte b = filter.get(offset / 8);
b |= 1 << (offset % 8);
filter.put(offset / 8, b);
-
- if (forkedFilter != null) {
- forkedFilter.setBit(offset);
- }
}
public void force() {
@@ -134,7 +133,7 @@
* Create an empty, in-memory copy of bloom filter. New updates are
written to both filters.
* This is written back to disk on #merge()
*/
- public void fork() {
+ public void fork(int k) {
lock.writeLock().lock();
try {
forkedFilter = new BloomFilter(length, k);
@@ -176,5 +175,10 @@
force();
}
filter = null;
+ forkedFilter = null;
}
+
+ public int getK() {
+ return k;
+ }
}