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;
+       }
 }


Reply via email to