From 6aa19ecc70cd2c92debff6d7008b5156959a7594 Mon Sep 17 00:00:00 2001 From: d10n Date: Fri, 6 Dec 2019 14:22:46 -0500 Subject: [PATCH 1/2] Prevent NPE when a value from Redis is null Signed-off-by: d10n --- .../src/main/java/org/redisson/RedissonBuckets.java | 6 +++++- .../test/java/org/redisson/RedissonBucketsTest.java | 13 ++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/redisson/src/main/java/org/redisson/RedissonBuckets.java b/redisson/src/main/java/org/redisson/RedissonBuckets.java index 7b62516ef..9d4777d39 100644 --- a/redisson/src/main/java/org/redisson/RedissonBuckets.java +++ b/redisson/src/main/java/org/redisson/RedissonBuckets.java @@ -87,7 +87,11 @@ public class RedissonBuckets implements RBuckets { @Override public void onSlotResult(Map result) { - results.putAll((Map) (Object) result); + for (Map.Entry entry : result.entrySet()) { + if (entry.getKey() != null && entry.getValue() != null) { + results.put((String) entry.getKey(), (V) entry.getValue()); + } + } } @Override diff --git a/redisson/src/test/java/org/redisson/RedissonBucketsTest.java b/redisson/src/test/java/org/redisson/RedissonBucketsTest.java index c16a147ca..609bbadc4 100644 --- a/redisson/src/test/java/org/redisson/RedissonBucketsTest.java +++ b/redisson/src/test/java/org/redisson/RedissonBucketsTest.java @@ -5,6 +5,7 @@ import static org.assertj.core.api.Assertions.assertThat; import java.io.IOException; import java.util.HashMap; import java.util.Map; +import java.util.Set; import org.junit.Assert; import org.junit.Test; @@ -47,7 +48,9 @@ public class RedissonBucketsTest extends BaseTest { redisson.getBucket("test" + i).set(i); } - Map buckets = redisson.getBuckets().get(map.keySet().toArray(new String[map.size()])); + Set queryKeys = map.keySet(); + queryKeys.add("test_invalid"); + Map buckets = redisson.getBuckets().get(queryKeys.toArray(new String[map.size()])); assertThat(buckets).isEqualTo(map); @@ -57,10 +60,10 @@ public class RedissonBucketsTest extends BaseTest { @Test public void testGet() { - RBucket bucket1 = redisson.getBucket("test1"); - bucket1.set("someValue1"); - RBucket bucket3 = redisson.getBucket("test3"); - bucket3.set("someValue3"); + redisson.getBucket("test1").set("someValue1"); + redisson.getBucket("test2").delete(); + redisson.getBucket("test3").set("someValue3"); + redisson.getBucket("test4").delete(); Map result = redisson.getBuckets().get("test1", "test2", "test3", "test4"); Map expected = new HashMap(); From 179927612ba3fcd8c6a5b663db50f65e10308e90 Mon Sep 17 00:00:00 2001 From: d10n Date: Wed, 11 Dec 2019 14:46:36 -0500 Subject: [PATCH 2/2] Fix unit test Signed-off-by: d10n --- redisson/src/test/java/org/redisson/RedissonBucketsTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/redisson/src/test/java/org/redisson/RedissonBucketsTest.java b/redisson/src/test/java/org/redisson/RedissonBucketsTest.java index 609bbadc4..9f1272d5f 100644 --- a/redisson/src/test/java/org/redisson/RedissonBucketsTest.java +++ b/redisson/src/test/java/org/redisson/RedissonBucketsTest.java @@ -4,6 +4,7 @@ import static org.assertj.core.api.Assertions.assertThat; import java.io.IOException; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; import java.util.Set; @@ -48,7 +49,7 @@ public class RedissonBucketsTest extends BaseTest { redisson.getBucket("test" + i).set(i); } - Set queryKeys = map.keySet(); + Set queryKeys = new HashSet<>(map.keySet()); queryKeys.add("test_invalid"); Map buckets = redisson.getBuckets().get(queryKeys.toArray(new String[map.size()]));