On May 1, 2009, at 3:02 PM, Robert Hailey wrote:


On Aug 19, 2008, at 7:24 PM, [email protected] wrote:

Author: toad
Date: 2008-08-20 00:24:11 +0000 (Wed, 20 Aug 2008)
New Revision: 22046

Added:
  branches/db4o/freenet/src/freenet/support/BinaryBloomFilter.java
  branches/db4o/freenet/src/freenet/support/BloomFilter.java
  branches/db4o/freenet/src/freenet/support/CountingBloomFilter.java
  branches/db4o/freenet/src/freenet/support/NullBloomFilter.java
...

Log:
Major optimisation: Bloom filters.
Partially works: activelinks load, freesites don't, persistent requests don't work either so far.
Will debug more.
Version upped to 1158, but merging isn't that urgent as I skipped the build (1156) which introduced the Big Bug that 1158 fixes.

[...]

Property changes on: branches/db4o/freenet/src/freenet/support/ BinaryBloomFilter.java
___________________________________________________________________
Name: svn:mergeinfo
  +

Copied: branches/db4o/freenet/src/freenet/support/BloomFilter.java (from rev 21911, branches/saltedhashstore/freenet/src/freenet/ support/BloomFilter.java)
===================================================================
--- branches/db4o/freenet/src/freenet/support/ BloomFilter.java (rev 0) +++ branches/db4o/freenet/src/freenet/support/BloomFilter.java 2008-08-20 00:24:11 UTC (rev 22046)
@@ -0,0 +1,185 @@
+package freenet.support;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.nio.MappedByteBuffer;
+import java.util.Random;
+import java.util.concurrent.locks.ReadWriteLock;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
+
+import org.spaceroots.mantissa.random.MersenneTwister;
+
+public abstract class BloomFilter {
+       protected ByteBuffer filter;
+
[...]
+       
+       // Wierd impl's should override
+       public void unsetAll() {
+               int x = filter.limit();
+               for(int i=0;i<x;i++)
+                       filter.put(i, (byte)0);
+       }
[...]

I think that there is a big (but subtle) flaw here... As far as I can tell unsetAll() is the only way to clear/initialize the filter and that it is never called (not on new store and not on rebuildBloom()).

--
Robert Hailey



_______________________________________________
Devl mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl

Reply via email to