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

On Aug 19, 2008, at 7:24 PM, toad at freenetproject.org 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



-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<https://emu.freenetproject.org/pipermail/devl/attachments/20090501/969ef570/attachment.html>

Reply via email to