On Wednesday 27 August 2008 09:41, Daniel Cheng wrote: > On Wed, Aug 27, 2008 at 5:12 AM, <toad at freenetproject.org> wrote: > > Author: toad > > Date: 2008-08-26 21:12:19 +0000 (Tue, 26 Aug 2008) > > New Revision: 22181 > > > > Modified: > > branches/db4o/freenet/src/freenet/support/CountingBloomFilter.java > > Log: > > FIX MAJOR BUG IN COUNTING BLOOM FILTER: > > / 4 not / 8 * 2. > > setBit(1000) was effectively also doing setBit(1008). > > PORT TO SALTED HASH STORE BRANCH ASAP! > > Your bloom filters are outdated. > > The Bloom filters was designed to work only at size of multiples of 8 . > Salted hash store took the alternative approach by enforcing this in r22021.
I don't understand how that would produce this bug. I was already using multiples of 8. If you are trying to set bit number 1000, the location will be (with the old code) 1000 / 8 * 2 = 250. The specific block within the byte will be 1000 % 4 = 0. Now, if you try to set bit number 1004, the location with the old code will be 1004 / 8 * 2 = 250, and the block within the byte will again be 0. Have you tried running the BloomFilterTest I committed against your code, with a counting filter vs a non-counting one? -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 189 bytes Desc: not available URL: <https://emu.freenetproject.org/pipermail/devl/attachments/20080827/fec6824a/attachment.pgp>
