2012-02-02 18 views
7

Estaba usando BloomFilter en guava v.11.0.1 y parece que recibo una excepción cuando mi inserción es grande. Intenté en 10 millones con 0.001 fpp, y falló.Guava Bloom Filter no admite inserciones grandes?

java.lang.IllegalArgumentException: Number of bits must be positive 
    at com.google.common.base.Preconditions.checkArgument(Preconditions.java:88) 
    at com.google.common.hash.BloomFilterStrategies.checkPositiveAndMakeMultipleOf64(BloomFilterStrategies.java:72) 
    at com.google.common.hash.BloomFilterStrategies.access$000(BloomFilterStrategies.java:18) 
    at com.google.common.hash.BloomFilterStrategies$From128ToN.withBits(BloomFilterStrategies.java:37) 
    at com.google.common.hash.BloomFilter.create(BloomFilter.java:192) 
    at com.ipg.collection.BloomFilterWritable.impl(BloomFilterWritable.java:43) 
    at com.ipg.collection.BloomFilterWritable.put(BloomFilterWritable.java:62) 
    at com.ipg.prophet.twitter.twitflow.archive.UnzipTweetsProcessAndUpload$ProcessorConsumer.process(UnzipTweetsProcessAndUpload.java:107) 
    at com.ipg.prophet.twitter.twitflow.archive.UnzipTweetsProcessAndUpload$ProcessorConsumer.run(UnzipTweetsProcessAndUpload.java:84) 
    at java.lang.Thread.run(Thread.java:662) 

creo que por lo menos debe admitir esa cantidad de inserciones con un alto FPP tal, no?

Respuesta

9

Lo sentimos acerca de esto, yo soy el culpable :)

Con suerte será capaz de empujar la próxima versión pronto. No es el momento de mencionar esto, pero hay un lado positivo de este accidente: significa que definitivamente podemos matar la forma de serie actual de BF y su código de apoyo relacionado (que fue un accidente en sí), que estoy tratando de reparar for a month now - por cierto, la solución a eso también soluciona este problema.

Editar: más información here (y en Louis' tema presentado)

5

Esto probablemente debería presentarse como un problema en Guava, no en StackOverflow. (Lo confirmo, por cierto, y en su mayoría he descubierto lo que está pasando.)

ACTUALIZACIÓN: he presentado un issue y he iniciado un parche.

+0

Oh, lo siento, gracias por la presentación de él! –