Code Monkey home page Code Monkey logo

orestes-bloomfilter's People

Contributors

baqend-ci avatar chriscurtin avatar divinetraube avatar fbuecklers avatar hannes-k avatar indyaah avatar ksm2 avatar malte-lau avatar mndfcked avatar wingerath avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

orestes-bloomfilter's Issues

Redis not returning status on creation of bit set?

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

If there is any shortage of memory, CountingBloomFilterRedis will be cleared?

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

Error while reading from redis slave

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 !

build a redis-bloom-filter from a json is not supported

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.

ambiguous reference of byte[] in countingbloomfilter

 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.

Pushing local filters to redis

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?

Add stable redis bloom filters

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!

NullPointerException in CountingBloomFilterRedis

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

In "BloomFilter" interface, "union" and "intersect" methods returns "false"

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:

  • Method "union": Return "true" if this bloom filter could successfully be updated through the union with the provided bloom filter.
  • Method "intersect": Return "true" if this bloom filter could successfully be updated through the intersection with the provided bloom filter.

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));
    }

}

question

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();
}

ArrayOutOfBounds exception on load testing

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.

Bootstrapping Regular Bloomfilter from a Redis Bloomfilter

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.

mvn could not resolve dependency anymore

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]

maven issue - invalid SHA1

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

Stackoverflow in BloomFilterRedis.contains

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)

Remote Redis filters with shared pools change to 'localhost' if they already exist

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");
}

Provide a shared Redis Pool to a Bloom Filter?

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

Memory Bloom filter: TODO "union", "intersect", and "clone config"

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;
    }

incompatible with jdk 1.6 !

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 ?

Can't have multiple bloom filters and reconnect to existing bloom filters in Redis

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.

Inability to have multiple bloom filters stored in redis?

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?

Error when building with gradle

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: 4

  • What 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: 9e26b4a9ebb910eaa1b8da8ff8575e514bc61c78

Kotlin: 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

"NumberFormatException: null" When "CountingBloomFilter.getEstimatedCount" is called before an "add"

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:

  1. Initialize a new Redis backed CountingBloomFilter
  2. Call CountingBloomFilter countingBloomFilter.getEstimatedCount()
  3. This leads to the Stack trace listed at the end (most of this is specific to my code, so I 'untabbed' the three lines specific to this code)

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)

Adding Population Count, looking for implementation advice

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

Synchronized on contains/add necessary for BloomFilterMemory?

Hi

I am wondering if the method blocks for contain/add need to be synchronized ?

public synchronized boolean contains(byte[] element) {

contains method is a read-only check on the existing bits.

public synchronized boolean addRaw(byte[] element) {

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.

Support for large bit set

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.

How to push local BloomFilter to Redis?

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:

  • simple file with the keys to add/query
  • how big to create the filter
  • how many items from the key file to actually add/query

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();
    }


}

jedis pool

you can use JedisSentinelPool instead of JedisPool, What do you think?

CountingBloomFilterRedis#remove() destroying the Redis Pool

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();
}

Java 7 backport of your code

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.

cannot install with maven

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] ------------------------------------------------------------------------

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.