From 633c801da414219772820e8c2847cd800c935704 Mon Sep 17 00:00:00 2001 From: Nikita Date: Thu, 12 Jul 2018 13:39:52 +0300 Subject: [PATCH 1/2] Fixed - HyperLogLog.addAll method doesn't add all elements. #1535 --- .../main/java/org/redisson/RedissonHyperLogLog.java | 2 +- .../java/org/redisson/RedissonHyperLogLogTest.java | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/redisson/src/main/java/org/redisson/RedissonHyperLogLog.java b/redisson/src/main/java/org/redisson/RedissonHyperLogLog.java index f28ba0fec..4abfd0eb7 100644 --- a/redisson/src/main/java/org/redisson/RedissonHyperLogLog.java +++ b/redisson/src/main/java/org/redisson/RedissonHyperLogLog.java @@ -77,7 +77,7 @@ public class RedissonHyperLogLog extends RedissonExpirable implements RHyperL List args = new ArrayList(objects.size() + 1); args.add(getName()); encode(args, objects); - return commandExecutor.writeAsync(getName(), codec, RedisCommands.PFADD, getName(), args.toArray()); + return commandExecutor.writeAsync(getName(), codec, RedisCommands.PFADD, args.toArray()); } @Override diff --git a/redisson/src/test/java/org/redisson/RedissonHyperLogLogTest.java b/redisson/src/test/java/org/redisson/RedissonHyperLogLogTest.java index 5e1e78d9d..7afe517a0 100644 --- a/redisson/src/test/java/org/redisson/RedissonHyperLogLogTest.java +++ b/redisson/src/test/java/org/redisson/RedissonHyperLogLogTest.java @@ -1,11 +1,21 @@ package org.redisson; +import java.util.Arrays; + import org.junit.Assert; import org.junit.Test; import org.redisson.api.RHyperLogLog; public class RedissonHyperLogLogTest extends BaseTest { + @Test + public void testAddAll() { + RHyperLogLog log = redisson.getHyperLogLog("log"); + log.addAll(Arrays.asList(1, 2, 3)); + + Assert.assertEquals(3L, log.count()); + } + @Test public void testAdd() { RHyperLogLog log = redisson.getHyperLogLog("log"); From 19b3e67441e8b8ea117be50ffc6e07c820bf35ee Mon Sep 17 00:00:00 2001 From: Nikita Date: Thu, 12 Jul 2018 15:52:09 +0300 Subject: [PATCH 2/2] Fixed - slow Redis Sentinel Initialization. #1541 --- .../connection/SentinelConnectionManager.java | 1 + .../test/java/org/redisson/RedissonTest.java | 60 +++++++++++++++++++ 2 files changed, 61 insertions(+) diff --git a/redisson/src/main/java/org/redisson/connection/SentinelConnectionManager.java b/redisson/src/main/java/org/redisson/connection/SentinelConnectionManager.java index 5d1396a65..60fac2523 100755 --- a/redisson/src/main/java/org/redisson/connection/SentinelConnectionManager.java +++ b/redisson/src/main/java/org/redisson/connection/SentinelConnectionManager.java @@ -448,6 +448,7 @@ public class SentinelConnectionManager extends MasterSlaveConnectionManager { } sentinels.putIfAbsent(key, client); + result.trySuccess(null); } }); return result; diff --git a/redisson/src/test/java/org/redisson/RedissonTest.java b/redisson/src/test/java/org/redisson/RedissonTest.java index 4e6e71433..6676b305f 100644 --- a/redisson/src/test/java/org/redisson/RedissonTest.java +++ b/redisson/src/test/java/org/redisson/RedissonTest.java @@ -633,6 +633,66 @@ public class RedissonTest { Assert.assertTrue(nodes.pingAll()); } + @Test + public void testSentinelStartup() throws Exception { + RedisRunner.RedisProcess master = new RedisRunner() + .nosave() + .randomDir() + .run(); + RedisRunner.RedisProcess slave1 = new RedisRunner() + .port(6380) + .nosave() + .randomDir() + .slaveof("127.0.0.1", 6379) + .run(); + RedisRunner.RedisProcess slave2 = new RedisRunner() + .port(6381) + .nosave() + .randomDir() + .slaveof("127.0.0.1", 6379) + .run(); + RedisRunner.RedisProcess sentinel1 = new RedisRunner() + .nosave() + .randomDir() + .port(26379) + .sentinel() + .sentinelMonitor("myMaster", "127.0.0.1", 6379, 2) + .run(); + RedisRunner.RedisProcess sentinel2 = new RedisRunner() + .nosave() + .randomDir() + .port(26380) + .sentinel() + .sentinelMonitor("myMaster", "127.0.0.1", 6379, 2) + .run(); + RedisRunner.RedisProcess sentinel3 = new RedisRunner() + .nosave() + .randomDir() + .port(26381) + .sentinel() + .sentinelMonitor("myMaster", "127.0.0.1", 6379, 2) + .run(); + + Thread.sleep(5000); + + Config config = new Config(); + config.useSentinelServers() + .setLoadBalancer(new RandomLoadBalancer()) + .addSentinelAddress(sentinel3.getRedisServerAddressAndPort()).setMasterName("myMaster"); + + long t = System.currentTimeMillis(); + RedissonClient redisson = Redisson.create(config); + assertThat(System.currentTimeMillis() - t).isLessThan(2000L); + redisson.shutdown(); + + sentinel1.stop(); + sentinel2.stop(); + sentinel3.stop(); + master.stop(); + slave1.stop(); + slave2.stop(); + } + // @Test public void testSentinel() { NodesGroup nodes = redisson.getNodesGroup();