baqend / orestes-bloomfilter Goto Github PK
View Code? Open in Web Editor NEWLibrary of different Bloom filters in Java with optional Redis-backing, counting and many hashing options.
License: Other
Library of different Bloom filters in Java with optional Redis-backing, counting and many hashing options.
License: Other
Hi,
It took me a little while to understand this block:
public boolean add(byte[] value) {
begin();
super.add(value);
if (commit() == null)
return add(value);
else
return true;
}
but I figured out that the first 'add' wasn't returning anything from Redis (in fact it looks like it was ignoring the request?) for the first call after the filter is created in Redis.
I tried to reproduce this standalone and couldn't, so I'm curious if you had any other insight into what Redis or Jedis is doing with the first 'bitset' pipeline?
Thanks,
Chris
I noticed that after I had started the program, I had 300 MB of memory left, and I restarted the project, and I didn't find any value after calling the contains method, it existed before the restart, Create CountingBloomFilterRedis is new FilterBuilder (1000000, 0.01), I think of after the restart, trigger CountingBloomFilterRedis, because of insufficient memory will remove old data, Generate a new filter. Is that true?
Thank you in advance
Using version 2.0.0
I've created a redis backed bloom filter using this code
new FilterBuilder(5000000, 0.01) .redisBacked(true) .name(id) .redisHost(redisMaster) .addReadSlave(redisSlave1, REDIS_PORT) .addReadSlave(redisSlave2, REDIS_PORT) .password(redisPassword) .buildBloomFilter());
Inserted some test elements to it
Used below code in some other application to access the above filter
new FilterBuilder(5000000, 0.01) .redisBacked(true) .name(bloomFilterId) .overwriteIfExists(false) .redisHost(redisMaster) .addReadSlave(redisSlave1, REDIS_PORT) .addReadSlave(redisSlave2, REDIS_PORT) .password(redisPassword) .buildBloomFilter();
Now when i use
bf.contains("testElement")
it triggers below exception
redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
at redis.clients.util.Pool.getResource(Pool.java:53)
at redis.clients.jedis.JedisPool.getResource(JedisPool.java:226)
at redis.clients.jedis.JedisPool.getResource(JedisPool.java:16)
at orestes.bloomfilter.redis.helper.RedisPool.safelyReturn(RedisPool.java:94)
at orestes.bloomfilter.redis.helper.RedisPool.transactionallyDo(RedisPool.java:110)
at orestes.bloomfilter.redis.RedisBitSet.getBulk(RedisBitSet.java:47)
at orestes.bloomfilter.redis.RedisBitSet.isAllSet(RedisBitSet.java:179)
at orestes.bloomfilter.redis.BloomFilterRedis.contains(BloomFilterRedis.java:103)
at orestes.bloomfilter.BloomFilter.contains(BloomFilter.java:64)
Caused by: redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectException: Connection refused (Connection refused)
at redis.clients.jedis.Connection.connect(Connection.java:207)
at redis.clients.jedis.BinaryClient.connect(BinaryClient.java:93)
at redis.clients.jedis.BinaryJedis.connect(BinaryJedis.java:1767)
at redis.clients.jedis.JedisFactory.makeObject(JedisFactory.java:106)
at org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:868)
at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:435)
at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:363)
at redis.clients.util.Pool.getResource(Pool.java:49)
... 39 more
Caused by: java.net.ConnectException: Connection refused (Connection refused)
at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399)
at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242)
at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)
at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403)
at java.base/java.net.Socket.connect(Socket.java:609)
at redis.clients.jedis.Connection.connect(Connection.java:184)
... 46 more
But when i do
bf.contains(Collections.singleton("testElement"))
It works exactly as expected;
Also i've checked any possible connectivity issues. all redis instances (master and slaves) are accessible from my machine.
Also it works just fine if i disable slaves and work with master alone.
Please help me resolve this issue; Any help is much appreciated !
Hi, now I need to build a redis-bloom-filter from a json(converted from another bloom-filter), but I have not found a way to set.
I just find getBitSet() method but not setBitSet(BitSet bitSet) method, and I test that letting getRedisBitSet() be public in BloomFilterRedis can satisfy my demand. e.g.
bloomFilter.getRedisBitSet().overwriteBitSet(BitSet.valueOf(bits));
so, could you please make it public in the future versions ?
thank you.
if I build several bloomfilter instances in a redis cluster with different filtername, how can i remove/flush one of the bloomfilter instance?
Buildfile: build.xml does not exist!
Build failed
private CountingBloomFilter<byte[]> cbf =
new FilterBuilder(MAX_KEYS, 0.01).buildCountingBloomFilter();
...
cbf.remove(key)
results in a compilation error:
Error:(73, 8) java: reference to remove is ambiguous
both method remove(byte[]) in orestes.bloomfilter.CountingBloomFilter and method remove(T) in orestes.bloomfilter.CountingBloomFilter match
Casting to a byte[], as below, does not help:
cbf.remove((byte[])key)
produces the same error.
Any help is appreciated.
Bringing up the issue in #4 again, it isn't clear that you can use that solution as getRedisBitSet() is not visible. Is there some other call I am missing?
Hi,
These implementations of bloom filter are really nice, especially the Redis-backed bloom filter !
I read about stable bloom filters and found some infos here (yeah i know, it's a bit blurry and the previous page is missing). It seems to be able to handle infinite values using an aging system. One could then configure a max age so that the size of the bloom filter stays stable.
Do you think it's something you could implement easily based on the Redis Counting Bloom Filters ?
Thanks!
We are using elasticache for the library. We encountered NPE during the removeAndEstimateCountRaw. Looks like NPE was thrown when executing transaction pipeline. Not sure what was wrong. Could someone help?
j.l.NullPointerException: null
at o.b.r.CountingBloomFilterRedis.removeAndEstimateCountRaw(CountingBloomFilterRedis.java:148)
at o.b.CountingBloomFilter.removeAndEstimateCount(CountingBloomFilter.java:112)
at c.h.u.r.b.BloomFilter.remove(BloomFilter.java:22)
Bloom filter library we are using is:
[INFO] \- com.baqend:bloom-filter:jar:2.2.4:compile
[INFO] +- redis.clients:jedis:jar:2.9.1:compile
Hi.
Congratulations for your Bloom Filter library: is very useful and complete.
Come on with my problem:
The execution of my test code (see below "MyTest" Java class) fails because "union" and "intersection" methods returns "false":
Interface orestes.bloomfilter.BloomFilter:
Why both returns "false"?
What's the meaning of "bloom filter could SUCCESSFULLY be updated"?
How to avoid tha "union" and "intersection" works well without returning "false"?
Thanks in advance.
public class MyTest {
public static void main(String[] args) {
BloomFilter<Long> alpha = new FilterBuilder()
.expectedElements(50)
.falsePositiveProbability(0.05)
.hashFunction(HashMethod.Murmur3)
.buildBloomFilter();
fill(1, 50, alpha);
BloomFilter<Long> omega = new FilterBuilder()
.expectedElements(62500)
.falsePositiveProbability(0.05)
.hashFunction(HashMethod.Murmur3)
.buildBloomFilter();
fill(2, 62500, omega);
try {
System.out.println("Intersection estimated population: " + intersection(alpha, omega).getEstimatedPopulation());
}
catch (UnsupportedOperationException uoe) {
uoe.printStackTrace();
}
try {
System.out.println("Union estimated population: " + union(alpha, omega).getEstimatedPopulation());
}
catch (UnsupportedOperationException uoe) {
uoe.printStackTrace();
}
}
static BloomFilter<Long> union(BloomFilter<Long> a, BloomFilter<Long> b) {
BloomFilter<Long> c = a.clone();
boolean success = c.union(b);
if (!success) throw new UnsupportedOperationException();
return c;
}
static BloomFilter<Long> intersection(BloomFilter<Long> a, BloomFilter<Long> b) {
BloomFilter<Long> c = a.clone();
boolean success = c.intersect(b);
if (!success) throw new UnsupportedOperationException();
return c;
}
static void fill(int seed, int max, BloomFilter<Long> bf) {
Random r = new Random(seed);
LongStream.rangeClosed(1, max).map(i -> r.nextLong()).filter(i -> i > 0).forEach(i -> bf.add(i));
}
}
Hi , i d like use your MemoryCountingBloomFilter but i have a question.
How to resize automatically the size of the filter ?
i want use it in a repository but i cant know the size of the elements.
I saw there is a handler for overflow. I thought to use this handler for
rebuilding a new filter with a size 2n.
I thought i could use just the info in the filter for resizing the filter.
In the case i renew i could use this func
@OverRide
public boolean union(BloomFilter other) {
//TODO
throw new UnsupportedOperationException();
}
During load testing of the Counting Bloom Filter inside a Spring MVC web application running in Tomcat, we see an ArrayIndexOutOfBoundsException as follows:
java.lang.ArrayIndexOutOfBoundsException
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:948)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
root cause: java.lang.ArrayIndexOutOfBoundsException
sun.security.provider.DigestBase.engineUpdate(DigestBase.java:127)
sun.security.provider.MD5.implDigest(MD5.java:105)
sun.security.provider.DigestBase.engineDigest(DigestBase.java:186)
sun.security.provider.DigestBase.engineDigest(DigestBase.java:165)
java.security.MessageDigest$Delegate.engineDigest(MessageDigest.java:576)
java.security.MessageDigest.digest(MessageDigest.java:353)
java.security.MessageDigest.digest(MessageDigest.java:399)
orestes.bloomfilter.BloomFilter.hashCrypt(BloomFilter.java:619)
orestes.bloomfilter.BloomFilter.hash(BloomFilter.java:679)
orestes.bloomfilter.BloomFilter.contains(BloomFilter.java:235)
orestes.bloomfilter.BloomFilter.contains(BloomFilter.java:242)
Our counting bloom filter is accessed concurrently to test for membership of the set and is created as follows:
bloomFilter = new CBloomFilter<String>(40_000_000, 0.01, 4);
Prior to starting the test we have preloaded 17 million elements.
This is with Java 7 release 40.
Why redis connect without password
Add a method to FilterBuilder in order to allow Redis authentication with a password.
Hi,
I have a quick query. Let us say I have a Redis Bloomfilter to which I keep adding entries, which in turn updates Redis.
Now is it possible for me to bootstrap a Regular Bloom filter by fetching this data from Redis? If so, how do I do it?
Thanks,
Rahul.
I had this dependency working for a long time (since january 2017) And it suddenly stopped working.
This is the file that appears to be incomplete:
http://jcenter.bintray.com/com/baqend/bloom-filter/2.0.0/bloom-filter-2.0.0.jar
And here's the error from maven:
Could not transfer artifact com.baqend:bloom-filter:jar:2.0.0 from/to bintray (http://jcenter.bintray.com): GET request of: com/baqend/bloom-filter/2.0.0/bloom-filter-2.0.0.jar from bintray failed: Connection reset -> [Help 1]
Hi There,
Nice work !
The following error is stopping me from referencing this project in maven:
problem while downloading module descriptor: https://raw.githubusercontent.com/Baqend/Orestes-Bloomfilter/master/maven-repo/com/baqend/bloom-filter/1.0/bloom-filter-1.0.pom: invalid sha1: expected=b112c77d6d14e915f8149240616de0e3c4299a5c computed=4d559b5ae487f5e3ec492659f46a669b5e2dd768
I am getting this error for v1.0, 1.01 and 1.02.
Would be nice if you can look into this
When executing BloomFilterRedis.contains with a large collection, the evaluation of request dependencies causes a stack overflow.
Looking at your JedisPool, it seems it might be better to (optionally?) use pipelining in place of MULTI/EXEC transactions for these operations, are you are not actually using an watchers, so the current implementation really just forces a network bottleneck as the full set of evaluations and responses is parsed all at once.
In my testing, I am attempting contains
on a set of 10,000 strings when I get the reproducible stack overflow.
java.lang.StackOverflowError
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:12)
at redis.clients.jedis.Response.build(Response.java:51)
at redis.clients.jedis.Response.get(Response.java:29)
at redis.clients.jedis.Pipeline$MultiResponseBuilder.build(Pipeline.java:31)
Hi,
I commented on this in a closed thread, so moving it here as something new.
Basically, if the filter exists already, the host name changes to localhost when you try to access it.
Steps:
flushall in Redis
run the script below, it will run through all cases, including passing the correct hostname on to the third filter created.
run the script again. Note that the host is now localhost, and then we can't connect to a remote database.
flushall in Redis
repeat running the code twice and it will work the first time, but not the second.
public static void main(String[] args) {
BloomFilter bf = new FilterBuilder(1000000, 0.001)
.name("temp")
.redisBacked(true)
.redisHost("vrd01.atlnp1")
.redisConnections(10)
.buildBloomFilter();
boolean contains = bf.contains("0");
if (contains) System.out.println("Had it");
else System.out.println("Doesn't have it");
BloomFilter bf1 = new FilterBuilder(1000, 0.001)
.name("temp2")
.redisBacked(true)
.redisHost("vrd01.atlnp1")
.buildBloomFilter();
contains = bf1.add("0");
if (!contains) System.out.println("1 Had it");
else System.out.println("1 Doesn't have it");
RedisPool pool = bf1.config().pool();
System.out.println(pool.getHost());
BloomFilter bf2 = new FilterBuilder(1000000, 0.001)
.name("second")
.redisBacked(true)
.pool(pool)
.buildBloomFilter();
contains = bf2.contains("0");
if (contains) System.out.println("2 Had it");
else System.out.println("2 Doesn't have it");
}
Hi,
Is there a way to provide a shared connection pool to a set of BloomFilters instead of creating one each time in the BloomFilterRedis constructor?
We're seeing almost double the time to add items to a BloomFilter if we have to create a new one each time.
Our use case is to have many thousands of filters, and based on incoming events figure out which filter to add and query. So creating a new pool for possibly 1 time use defeats having a pool.
Thanks,
Chris
Is there any plan to publish this project artifacts to Maven Central? It would make adopting this library easy for a lot of Java developers (and Groovy, Scala, Clojure etc too) http://search.maven.org Thanks!
Please, could you implemente these three features?
package orestes.bloomfilter.memory;
public class CountingBloomFilterMemory<T> implements CountingBloomFilter<T> {
@Override
public boolean union(BloomFilter<T> other) {
//TODO
throw new UnsupportedOperationException();
}
@Override
public boolean intersect(BloomFilter<T> other) {
//TODO
throw new UnsupportedOperationException();
}
}
public class BloomFilterMemory<T> implements BloomFilter<T> {
@Override
@SuppressWarnings("unchecked")
public synchronized BloomFilter<T> clone() {
BloomFilterMemory<T> o = null;
try {
o = (BloomFilterMemory<T>) super.clone();
}
catch (CloneNotSupportedException e) {
e.printStackTrace();
}
o.bloom = (BitSet) bloom.clone();
//TODO clone config
return o;
}
I couldn't find any how-to about, how I can use the software as a standalone server app, so that I can implement and use as a REST api. Should I use this with ie. play-framework?
Please refer to:
jmhodges/opposite_of_a_bloom_filter#3
I am getting error "Unsupported major.minor version 51.0" while running with jdk 1.6 and I am also unable to build project from github repository. Am I missing something ?
Hi,
I'm in a distributed environment where servers will be adding to shared bloom filters. Currently, there's no way to reference an existing bloom filter if a server disconnects and then wants to reconnect. It seems as if two instantiations will connect to the same bloom filter.
For example, consider this use-case:
CBloomFilterRedisBits<String> f1 = new CBloomFilterRedisBits<>(host, port, 100, 0.1, 4);
f1.add("dog");
CBloomFilterRedisBits<String> f2 = new CBloomFilterRedisBits<>(host, port, 100, 0.1, 4);
f2.add("cat");
f1.contains("dog"); // returns true, as expected
f1.contains("cat"); // also returns true, which is unexpected. It should not contain cat.
f2.contains("dog"); // also returns true, which is unexpected. It should not contain dog.
f2.contains("cat"); // return true, as expected
What is needed is an ability to associate a key to the bloom filter. That would allow us to reference the bloom filter after a disconnect.
Hi, I'm attempting to use your Redis backed bloomfilter, but it appears that it always stores the filter under a hardcoded key called "normalbloomfilter". How can I have a second bloom filter without overwriting the first one?
In production, we probably use cluster mode , but for now, OBF does not support this
Hi,
Is it possible to load json to Redis - backed filter?
or set bitset
Thanks,
Lyudmila
I am getting a plugin error when trying to build
FAILURE: Build failed with an exception.
Where:
Build file '/home/zach/sources/Orestes-Bloomfilter/build.gradle' line: 4What went wrong:
Plugin [id: 'com.jfrog.bintray', version: '1.1'] was not found in any of the following sources:
- Gradle Core Plugins (plugin is not in 'org.gradle' namespace)
- Plugin Repositories (could not resolve plugin artifact 'com.jfrog.bintray:com.jfrog.bintray.gradle.plugin:1.1')
Searched in the following repositories:
Gradle Central Plugin Repository
I tried changing the version to v1.8.5 and got the same error
some more info
Gradle 6.8.3
Build time: 2021-02-22 16:13:28 UTC
Revision: 9e26b4a9ebb910eaa1b8da8ff8575e514bc61c78Kotlin: 1.4.20
Groovy: 2.5.12
Ant: Apache Ant(TM) version 1.10.9 compiled on September 27 2020
JVM: 11.0.10 (Ubuntu 11.0.10+9-Ubuntu-0ubuntu1.18.04)
OS: Linux 5.4.0-70-generic amd64
my project use jdk1.7
how can i use jdk1.7 use this lib?
thanks
Objects.equals(counters, that.counters)
does not compare array content.
java.util.Arrays.equals(Object[], Object[]) should be used
I am working to add Bloom filter support to Apache NiFi[1] using this library and ran across this corner case when unit testing. The steps to reproduce:
This is due to "hmget" here[3] being full of nulls and then attempting to call "Long::valueOf" on the null values.
[1] https://github.com/JPercivall/nifi/tree/BloomfilterProcessor
[2] https://github.com/Baqend/Orestes-Bloomfilter/blob/master/src/main/java/orestes/bloomfilter/redis/CountingBloomFilterRedis.java#L116
java.lang.AssertionError: java.lang.NumberFormatException: null
at org.apache.nifi.util.StandardProcessorTestRunner.run(StandardProcessorTestRunner.java:193)
at org.apache.nifi.util.StandardProcessorTestRunner.run(StandardProcessorTestRunner.java:152)
at org.apache.nifi.util.StandardProcessorTestRunner.run(StandardProcessorTestRunner.java:147)
at org.apache.nifi.util.StandardProcessorTestRunner.run(StandardProcessorTestRunner.java:142)
at org.apache.nifi.processors.analysis.TestBloomFilter.testCountingBasic(TestBloomFilter.java:204)
at org.apache.nifi.processors.analysis.integration.TestBloomFilterRedisBacked.testCountingBasic(TestBloomFilterRedisBacked.java:100)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:119)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:42)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:234)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:74)
Caused by: java.lang.NumberFormatException: null
at java.lang.Long.parseLong(Long.java:552)
at java.lang.Long.valueOf(Long.java:803)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.reduce(ReferencePipeline.java:479)
at java.util.stream.ReferencePipeline.min(ReferencePipeline.java:520)
at orestes.bloomfilter.redis.CountingBloomFilterRedis.lambda$getEstimatedCount$9(CountingBloomFilterRedis.java:118)
at orestes.bloomfilter.redis.helper.RedisPool.safelyReturn(RedisPool.java:92)
at orestes.bloomfilter.redis.CountingBloomFilterRedis.getEstimatedCount(CountingBloomFilterRedis.java:115)
at org.apache.nifi.processors.stateful.analysis.BloomFilterProcessor.onTrigger(BloomFilterProcessor.java:310)
at org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)
at org.apache.nifi.util.StandardProcessorTestRunner$RunProcessor.call(StandardProcessorTestRunner.java:243)
at org.apache.nifi.util.StandardProcessorTestRunner$RunProcessor.call(StandardProcessorTestRunner.java:237)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Hi,
We have added a population count to the regular and Redis-backed bloom filters, but before submitting a pull request wanted to get direction on where this feature should be added.
The changes add a field or Redis key for the population, meaning the unique number of items added to the filter, understanding that the error percent is also reflected in the population counts.
For the first iteration, we've added derived classes for this capability with minor changes to the existing classes. The changes are mostly around figuring out which add calls actually changed bits in the filter.
The most invasive part was adding another method for a bulk add, since addAll today does not return a status to tell us which items were added.
However looking at the implementation we think enhancing the BloomFilters classes would be a better/cleaner way of supporting a population count vs. a derived class. In particular the Redis classes had to change some visibility on methods to allow access to the internal Jedis which made me think this should be in the existing classes.
Can you give us direction on whether or not to implement this directly in the existing classes or keep it external? (For Redis, I figured I could have a flag to NOT do the population unless explicitly created to do it, so as to not have the extra round trip)
Thanks,
Chris
For example,
new FilterBuilder(1000000, 1e-5)
when it full (added 1000000 elements)
how much memory it cost. is there any calculation method?
I noticed the max size was 2147483647 of the Redis Bloom Filter, How could I use the 512M of Redis memroy?
I was trying to pull out a BitSet from the stored bitset in Redis, and I've come to find out that they are not the same. I think the code is suffering from what's being discussed here: http://grantmuller.com/be-careful-with-your-redis-bitsets-and-java/. After I tried to do as they suggest, it seems to have corrected the issue.
Hi
I am wondering if the method blocks for contain/add need to be synchronized
?
contains
method is a read-only check on the existing bits.
add
method is slightly more trivial than contains since its checking and then setting bits, and also tracking whether any bit was added, eventually returning the added
variable. So the caller can figure out if a new bit was set when adding an item. synchronized
does makes sense in this case, but what if as a caller I am not concerned about whether a new bit was set on adding an element.
I have extended the BloomFilterMemory
class in my project and made the two methods non synchronized, just wanted to be sure that I am not overlooking anything.
Thanks a lot for making and open-sourcing this.
The current implementation of optimalM(double n, double p) returns an int. This limits the largest bit set that can be used when creating a bloom filter.
E.g. I tried to create a bloomFilter with n = 100M but that crashed because the # of bits required to support that do not fit into an int.
Hi,
I want to build the filter locally then push it to Redis to avoid the huge # of round trips. However when I do this by getting the BitSet via 'getBitSet' and calling overwrite none of my items are found.
What is the correct way to copy from a local BloomFilter to Redis-backed?
Thanks,
Chris
Source code below. Parameters:
All the contains() calls are failing.
public static void main(String[] args) {
String invalidPath = args[0];
long suppressedListSize = Long.parseLong(args[1]);
long numItemsToAdd = Long.parseLong(args[2]);
BloomFilter<String> filter = new BloomFilter<>(suppressedListSize, 0.01);
filter.setHashMethod(BloomFilter.HashMethod.Murmur);
String contact;
// build the filter
try {
BufferedReader reader = new BufferedReader(new FileReader(invalidPath));
long startTime = System.nanoTime();
long numAdded = 0;
while ((contact = reader.readLine()) != null) {
numAdded++;
if (numAdded > numItemsToAdd) break;
filter.add(contact);
}
reader.close();
long endTime = System.nanoTime();
System.out.println("Time to create filter:" + (endTime - startTime) / 1e6);
startTime = System.nanoTime();
String IP = "vrd01.atlnp1";
BloomFilterRedis<String> remoteFilter = new BloomFilterRedis<>(IP, 6379, suppressedListSize, 0.01);
remoteFilter.setHashMethod(BloomFilter.HashMethod.Murmur);
RedisBitSet remoteSet = (RedisBitSet) remoteFilter.getBitSet();
remoteSet.overwrite(filter.getBitSet());
endTime = System.nanoTime();
System.out.println("Time to push filter:" + (endTime - startTime) / 1e6);
startTime = System.nanoTime();
numAdded = 0;
reader = new BufferedReader(new FileReader(invalidPath));
while ((contact = reader.readLine()) != null) {
numAdded++;
if (numAdded > numItemsToAdd) break;
if (remoteFilter.contains(contact) == false) {
System.out.println("MISSING DATA???:" + contact);
}
}
reader.close();
endTime = System.nanoTime();
System.out.println("Time to query filter:" + (endTime - startTime) / 1e6);
} catch (Exception e) {
System.out.println("Oops");
e.printStackTrace();
}
}
According to the xxHash function's website: http://cyan4973.github.io/xxHash/
xxHash is the fastest non-cryptological function. Is there a plan to implement xxHash in roadmap ?
public BitSet(int nbits). BF doesn't grow more than pow(2, 31) size. Please change size and boolean vector to unsigned long int.
you can use JedisSentinelPool instead of JedisPool, What do you think?
The Redis Pool could be shared between several BloomFilter instances. If one of the filters is removed filter.remove()
, the Redis Pool is destroyed. This makes the rest of active filter instances unusable:
@Override
public void remove() {
clear();
pool.safelyDo(jedis -> jedis.del(config().name()));
pool.destroy();
}
Hi,
I've just finished backporting your code to java 7. Take a look at my branch port-java7.
I can't suggest a pull request to a new branch on your side (there's no option in github for that) but I thought you might like to have it and it seems you could do this using command line.
The only discrepancies are the tests that used CompletableFuture
which I haven't rewritten for java 7.
Otherwise all tests pass. I haven't yet built it but I wanted to share this work early as it's already on github.
I think this may be usefull to people who can't yet afford to switch to Java 8.
Please let me know what you think about it.
I have followed the instructions in the readme but
mvn dependency:resolve
gives
[INFO] ------------------------------------------------------------------------
[WARNING] The POM for com.baqend:bloom-filter:jar:1.0.7 is missing, no dependency information available
[INFO] ------------------------------------------------------------------------
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.