Skip to content

Commit f60814a

Browse files
committed
Accept null replies for BZPOPMAX and BZPOPMIN commands (#3930)
1 parent be6cec8 commit f60814a

File tree

4 files changed

+27
-8
lines changed

4 files changed

+27
-8
lines changed

src/main/java/redis/clients/jedis/BuilderFactory.java

+6-8
Original file line numberDiff line numberDiff line change
@@ -598,10 +598,9 @@ public String toString() {
598598
@Override
599599
@SuppressWarnings("unchecked")
600600
public KeyValue<String, Tuple> build(Object data) {
601-
List<Object> l = (List<Object>) data; // never null
602-
if (l.isEmpty()) {
603-
return null;
604-
}
601+
if (data == null) return null;
602+
List<Object> l = (List<Object>) data;
603+
if (l.isEmpty()) return null;
605604
return KeyValue.of(STRING.build(l.get(0)), new Tuple(BINARY.build(l.get(1)), DOUBLE.build(l.get(2))));
606605
}
607606

@@ -615,10 +614,9 @@ public String toString() {
615614
@Override
616615
@SuppressWarnings("unchecked")
617616
public KeyValue<byte[], Tuple> build(Object data) {
618-
List<Object> l = (List<Object>) data; // never null
619-
if (l.isEmpty()) {
620-
return null;
621-
}
617+
if (data == null) return null;
618+
List<Object> l = (List<Object>) data;
619+
if (l.isEmpty()) return null;
622620
return KeyValue.of(BINARY.build(l.get(0)), new Tuple(BINARY.build(l.get(1)), DOUBLE.build(l.get(2))));
623621
}
624622

src/test/java/redis/clients/jedis/commands/jedis/SortedSetCommandsTest.java

+8
Original file line numberDiff line numberDiff line change
@@ -1519,12 +1519,16 @@ public void infinity() {
15191519

15201520
@Test
15211521
public void bzpopmax() {
1522+
assertNull(jedis.bzpopmax(1, "foo", "bar"));
1523+
15221524
jedis.zadd("foo", 1d, "a", ZAddParams.zAddParams().nx());
15231525
jedis.zadd("foo", 10d, "b", ZAddParams.zAddParams().nx());
15241526
jedis.zadd("bar", 0.1d, "c", ZAddParams.zAddParams().nx());
15251527
assertEquals(new KeyValue<>("foo", new Tuple("b", 10d)), jedis.bzpopmax(0, "foo", "bar"));
15261528

15271529
// Binary
1530+
assertNull(jedis.bzpopmax(1, bfoo, bbar));
1531+
15281532
jedis.zadd(bfoo, 1d, ba);
15291533
jedis.zadd(bfoo, 10d, bb);
15301534
jedis.zadd(bbar, 0.1d, bc);
@@ -1535,12 +1539,16 @@ public void bzpopmax() {
15351539

15361540
@Test
15371541
public void bzpopmin() {
1542+
assertNull(jedis.bzpopmin(1, "bar", "foo"));
1543+
15381544
jedis.zadd("foo", 1d, "a", ZAddParams.zAddParams().nx());
15391545
jedis.zadd("foo", 10d, "b", ZAddParams.zAddParams().nx());
15401546
jedis.zadd("bar", 0.1d, "c", ZAddParams.zAddParams().nx());
15411547
assertEquals(new KeyValue<>("bar", new Tuple("c", 0.1)), jedis.bzpopmin(0, "bar", "foo"));
15421548

15431549
// Binary
1550+
assertNull(jedis.bzpopmin(1, bbar, bfoo));
1551+
15441552
jedis.zadd(bfoo, 1d, ba);
15451553
jedis.zadd(bfoo, 10d, bb);
15461554
jedis.zadd(bbar, 0.1d, bc);

src/test/java/redis/clients/jedis/commands/unified/SortedSetCommandsTestBase.java

+8
Original file line numberDiff line numberDiff line change
@@ -1508,12 +1508,16 @@ public void infinity() {
15081508

15091509
@Test
15101510
public void bzpopmax() {
1511+
assertNull(jedis.bzpopmax(1, "foo", "bar"));
1512+
15111513
jedis.zadd("foo", 1d, "a", ZAddParams.zAddParams().nx());
15121514
jedis.zadd("foo", 10d, "b", ZAddParams.zAddParams().nx());
15131515
jedis.zadd("bar", 0.1d, "c", ZAddParams.zAddParams().nx());
15141516
assertEquals(new KeyValue<>("foo", new Tuple("b", 10d)), jedis.bzpopmax(0, "foo", "bar"));
15151517

15161518
// Binary
1519+
assertNull(jedis.bzpopmax(1, bfoo, bbar));
1520+
15171521
jedis.zadd(bfoo, 1d, ba);
15181522
jedis.zadd(bfoo, 10d, bb);
15191523
jedis.zadd(bbar, 0.1d, bc);
@@ -1524,12 +1528,16 @@ public void bzpopmax() {
15241528

15251529
@Test
15261530
public void bzpopmin() {
1531+
assertNull(jedis.bzpopmin(1, "bar", "foo"));
1532+
15271533
jedis.zadd("foo", 1d, "a", ZAddParams.zAddParams().nx());
15281534
jedis.zadd("foo", 10d, "b", ZAddParams.zAddParams().nx());
15291535
jedis.zadd("bar", 0.1d, "c", ZAddParams.zAddParams().nx());
15301536
assertEquals(new KeyValue<>("bar", new Tuple("c", 0.1)), jedis.bzpopmin(0, "bar", "foo"));
15311537

15321538
// Binary
1539+
assertNull(jedis.bzpopmin(1, bbar, bfoo));
1540+
15331541
jedis.zadd(bfoo, 1d, ba);
15341542
jedis.zadd(bfoo, 10d, bb);
15351543
jedis.zadd(bbar, 0.1d, bc);

src/test/java/redis/clients/jedis/commands/unified/cluster/ClusterSortedSetCommandsTest.java

+5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
//package redis.clients.jedis.commands.unified.cluster;
22
//
33
//import static org.junit.Assert.assertEquals;
4+
//import static org.junit.Assert.assertNull;
45
//
56
//import java.util.ArrayList;
67
//import java.util.Collections;
@@ -148,6 +149,8 @@
148149
// @Test
149150
// @Override
150151
// public void bzpopmax() {
152+
// assertNull(jedis.bzpopmax(1, "f{:}oo", "b{:}ar"));
153+
//
151154
// jedis.zadd("f{:}oo", 1d, "a", ZAddParams.zAddParams().nx());
152155
// jedis.zadd("f{:}oo", 10d, "b", ZAddParams.zAddParams().nx());
153156
// jedis.zadd("b{:}ar", 0.1d, "c", ZAddParams.zAddParams().nx());
@@ -157,6 +160,8 @@
157160
// @Test
158161
// @Override
159162
// public void bzpopmin() {
163+
// assertNull(jedis.bzpopmin(1, "ba{:}r", "fo{:}o"));
164+
//
160165
// jedis.zadd("fo{:}o", 1d, "a", ZAddParams.zAddParams().nx());
161166
// jedis.zadd("fo{:}o", 10d, "b", ZAddParams.zAddParams().nx());
162167
// jedis.zadd("ba{:}r", 0.1d, "c", ZAddParams.zAddParams().nx());

0 commit comments

Comments
 (0)