Skip to content

Commit 2bb3989

Browse files
authored
Fix binary variants of XRANGE and XREAD commands (#3571)
where each individual element in the list is actually a complex object rather than a simple byte array.
1 parent 5cd40fc commit 2bb3989

File tree

8 files changed

+60
-59
lines changed

8 files changed

+60
-59
lines changed

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

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2402,24 +2402,24 @@ public final CommandObject<List<StreamEntry>> xrevrange(String key, String end,
24022402
return new CommandObject<>(commandArguments(XREVRANGE).key(key).add(end).add(start).add(COUNT).add(count), BuilderFactory.STREAM_ENTRY_LIST);
24032403
}
24042404

2405-
public final CommandObject<List<byte[]>> xrange(byte[] key, byte[] start, byte[] end) {
2405+
public final CommandObject<List<Object>> xrange(byte[] key, byte[] start, byte[] end) {
24062406
return new CommandObject<>(commandArguments(XRANGE).key(key).add(start == null ? "-" : start).add(end == null ? "+" : end),
2407-
BuilderFactory.BINARY_LIST);
2407+
BuilderFactory.RAW_OBJECT_LIST);
24082408
}
24092409

2410-
public final CommandObject<List<byte[]>> xrange(byte[] key, byte[] start, byte[] end, int count) {
2410+
public final CommandObject<List<Object>> xrange(byte[] key, byte[] start, byte[] end, int count) {
24112411
return new CommandObject<>(commandArguments(XRANGE).key(key).add(start == null ? "-" : start).add(end == null ? "+" : end)
2412-
.add(COUNT).add(count), BuilderFactory.BINARY_LIST);
2412+
.add(COUNT).add(count), BuilderFactory.RAW_OBJECT_LIST);
24132413
}
24142414

2415-
public final CommandObject<List<byte[]>> xrevrange(byte[] key, byte[] end, byte[] start) {
2415+
public final CommandObject<List<Object>> xrevrange(byte[] key, byte[] end, byte[] start) {
24162416
return new CommandObject<>(commandArguments(XREVRANGE).key(key).add(end == null ? "+" : end).add(start == null ? "-" : start),
2417-
BuilderFactory.BINARY_LIST);
2417+
BuilderFactory.RAW_OBJECT_LIST);
24182418
}
24192419

2420-
public final CommandObject<List<byte[]>> xrevrange(byte[] key, byte[] end, byte[] start, int count) {
2420+
public final CommandObject<List<Object>> xrevrange(byte[] key, byte[] end, byte[] start, int count) {
24212421
return new CommandObject<>(commandArguments(XREVRANGE).key(key).add(end == null ? "+" : end).add(start == null ? "-" : start)
2422-
.add(COUNT).add(count), BuilderFactory.BINARY_LIST);
2422+
.add(COUNT).add(count), BuilderFactory.RAW_OBJECT_LIST);
24232423
}
24242424

24252425
public final CommandObject<Long> xack(String key, String group, StreamEntryID... ids) {
@@ -2660,18 +2660,18 @@ public final CommandObject<List<Map.Entry<String, List<StreamEntry>>>> xreadGrou
26602660
return new CommandObject<>(args, BuilderFactory.STREAM_READ_RESPONSE);
26612661
}
26622662

2663-
public final CommandObject<List<byte[]>> xread(XReadParams xReadParams, Map.Entry<byte[], byte[]>... streams) {
2663+
public final CommandObject<List<Object>> xread(XReadParams xReadParams, Map.Entry<byte[], byte[]>... streams) {
26642664
CommandArguments args = commandArguments(XREAD).addParams(xReadParams).add(STREAMS);
26652665
for (Map.Entry<byte[], byte[]> entry : streams) {
26662666
args.key(entry.getKey());
26672667
}
26682668
for (Map.Entry<byte[], byte[]> entry : streams) {
26692669
args.add(entry.getValue());
26702670
}
2671-
return new CommandObject<>(args, BuilderFactory.BINARY_LIST);
2671+
return new CommandObject<>(args, BuilderFactory.RAW_OBJECT_LIST);
26722672
}
26732673

2674-
public final CommandObject<List<byte[]>> xreadGroup(byte[] groupName, byte[] consumer,
2674+
public final CommandObject<List<Object>> xreadGroup(byte[] groupName, byte[] consumer,
26752675
XReadGroupParams xReadGroupParams, Map.Entry<byte[], byte[]>... streams) {
26762676
CommandArguments args = commandArguments(XREADGROUP)
26772677
.add(GROUP).add(groupName).add(consumer)
@@ -2682,7 +2682,7 @@ public final CommandObject<List<byte[]>> xreadGroup(byte[] groupName, byte[] con
26822682
for (Map.Entry<byte[], byte[]> entry : streams) {
26832683
args.add(entry.getValue());
26842684
}
2685-
return new CommandObject<>(args, BuilderFactory.BINARY_LIST);
2685+
return new CommandObject<>(args, BuilderFactory.RAW_OBJECT_LIST);
26862686
}
26872687
// Stream commands
26882688

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4646,13 +4646,13 @@ public long hstrlen(final byte[] key, final byte[] field) {
46464646
}
46474647

46484648
@Override
4649-
public List<byte[]> xread(XReadParams xReadParams, Entry<byte[], byte[]>... streams) {
4649+
public List<Object> xread(XReadParams xReadParams, Entry<byte[], byte[]>... streams) {
46504650
checkIsInMultiOrPipeline();
46514651
return connection.executeCommand(commandObjects.xread(xReadParams, streams));
46524652
}
46534653

46544654
@Override
4655-
public List<byte[]> xreadGroup(byte[] groupName, byte[] consumer,
4655+
public List<Object> xreadGroup(byte[] groupName, byte[] consumer,
46564656
XReadGroupParams xReadGroupParams, Entry<byte[], byte[]>... streams) {
46574657
checkIsInMultiOrPipeline();
46584658
return connection.executeCommand(commandObjects.xreadGroup(groupName, consumer, xReadGroupParams, streams));
@@ -4671,25 +4671,25 @@ public long xlen(byte[] key) {
46714671
}
46724672

46734673
@Override
4674-
public List<byte[]> xrange(byte[] key, byte[] start, byte[] end) {
4674+
public List<Object> xrange(byte[] key, byte[] start, byte[] end) {
46754675
checkIsInMultiOrPipeline();
46764676
return connection.executeCommand(commandObjects.xrange(key, start, end));
46774677
}
46784678

46794679
@Override
4680-
public List<byte[]> xrange(byte[] key, byte[] start, byte[] end, int count) {
4680+
public List<Object> xrange(byte[] key, byte[] start, byte[] end, int count) {
46814681
checkIsInMultiOrPipeline();
46824682
return connection.executeCommand(commandObjects.xrange(key, start, end, count));
46834683
}
46844684

46854685
@Override
4686-
public List<byte[]> xrevrange(byte[] key, byte[] end, byte[] start) {
4686+
public List<Object> xrevrange(byte[] key, byte[] end, byte[] start) {
46874687
checkIsInMultiOrPipeline();
46884688
return connection.executeCommand(commandObjects.xrevrange(key, end, start));
46894689
}
46904690

46914691
@Override
4692-
public List<byte[]> xrevrange(byte[] key, byte[] end, byte[] start, int count) {
4692+
public List<Object> xrevrange(byte[] key, byte[] end, byte[] start, int count) {
46934693
checkIsInMultiOrPipeline();
46944694
return connection.executeCommand(commandObjects.xrevrange(key, end, start, count));
46954695
}

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

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2968,22 +2968,22 @@ public Response<Long> xlen(byte[] key) {
29682968
}
29692969

29702970
@Override
2971-
public Response<List<byte[]>> xrange(byte[] key, byte[] start, byte[] end) {
2971+
public Response<List<Object>> xrange(byte[] key, byte[] start, byte[] end) {
29722972
return appendCommand(commandObjects.xrange(key, start, end));
29732973
}
29742974

29752975
@Override
2976-
public Response<List<byte[]>> xrange(byte[] key, byte[] start, byte[] end, int count) {
2976+
public Response<List<Object>> xrange(byte[] key, byte[] start, byte[] end, int count) {
29772977
return appendCommand(commandObjects.xrange(key, start, end, count));
29782978
}
29792979

29802980
@Override
2981-
public Response<List<byte[]>> xrevrange(byte[] key, byte[] end, byte[] start) {
2981+
public Response<List<Object>> xrevrange(byte[] key, byte[] end, byte[] start) {
29822982
return appendCommand(commandObjects.xrevrange(key, end, start));
29832983
}
29842984

29852985
@Override
2986-
public Response<List<byte[]>> xrevrange(byte[] key, byte[] end, byte[] start, int count) {
2986+
public Response<List<Object>> xrevrange(byte[] key, byte[] end, byte[] start, int count) {
29872987
return appendCommand(commandObjects.xrevrange(key, end, start, count));
29882988
}
29892989

@@ -3088,12 +3088,13 @@ public Response<List<Object>> xinfoConsumers(byte[] key, byte[] group) {
30883088
}
30893089

30903090
@Override
3091-
public Response<List<byte[]>> xread(XReadParams xReadParams, Map.Entry<byte[], byte[]>... streams) {
3091+
public Response<List<Object>> xread(XReadParams xReadParams, Map.Entry<byte[], byte[]>... streams) {
30923092
return appendCommand(commandObjects.xread(xReadParams, streams));
30933093
}
30943094

30953095
@Override
3096-
public Response<List<byte[]>> xreadGroup(byte[] groupName, byte[] consumer, XReadGroupParams xReadGroupParams, Map.Entry<byte[], byte[]>... streams) {
3096+
public Response<List<Object>> xreadGroup(byte[] groupName, byte[] consumer,
3097+
XReadGroupParams xReadGroupParams, Map.Entry<byte[], byte[]>... streams) {
30973098
return appendCommand(commandObjects.xreadGroup(groupName, consumer, xReadGroupParams, streams));
30983099
}
30993100

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3135,22 +3135,22 @@ public Response<Long> xlen(byte[] key) {
31353135
}
31363136

31373137
@Override
3138-
public Response<List<byte[]>> xrange(byte[] key, byte[] start, byte[] end) {
3138+
public Response<List<Object>> xrange(byte[] key, byte[] start, byte[] end) {
31393139
return appendCommand(commandObjects.xrange(key, start, end));
31403140
}
31413141

31423142
@Override
3143-
public Response<List<byte[]>> xrange(byte[] key, byte[] start, byte[] end, int count) {
3143+
public Response<List<Object>> xrange(byte[] key, byte[] start, byte[] end, int count) {
31443144
return appendCommand(commandObjects.xrange(key, start, end, count));
31453145
}
31463146

31473147
@Override
3148-
public Response<List<byte[]>> xrevrange(byte[] key, byte[] end, byte[] start) {
3148+
public Response<List<Object>> xrevrange(byte[] key, byte[] end, byte[] start) {
31493149
return appendCommand(commandObjects.xrevrange(key, end, start));
31503150
}
31513151

31523152
@Override
3153-
public Response<List<byte[]>> xrevrange(byte[] key, byte[] end, byte[] start, int count) {
3153+
public Response<List<Object>> xrevrange(byte[] key, byte[] end, byte[] start, int count) {
31543154
return appendCommand(commandObjects.xrevrange(key, end, start, count));
31553155
}
31563156

@@ -3255,12 +3255,12 @@ public Response<List<Object>> xinfoConsumers(byte[] key, byte[] group) {
32553255
}
32563256

32573257
@Override
3258-
public Response<List<byte[]>> xread(XReadParams xReadParams, Map.Entry<byte[], byte[]>... streams) {
3258+
public Response<List<Object>> xread(XReadParams xReadParams, Map.Entry<byte[], byte[]>... streams) {
32593259
return appendCommand(commandObjects.xread(xReadParams, streams));
32603260
}
32613261

32623262
@Override
3263-
public Response<List<byte[]>> xreadGroup(byte[] groupName, byte[] consumer, XReadGroupParams xReadGroupParams, Map.Entry<byte[], byte[]>... streams) {
3263+
public Response<List<Object>> xreadGroup(byte[] groupName, byte[] consumer, XReadGroupParams xReadGroupParams, Map.Entry<byte[], byte[]>... streams) {
32643264
return appendCommand(commandObjects.xreadGroup(groupName, consumer, xReadGroupParams, streams));
32653265
}
32663266

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3058,22 +3058,22 @@ public long xlen(byte[] key) {
30583058
}
30593059

30603060
@Override
3061-
public List<byte[]> xrange(byte[] key, byte[] start, byte[] end) {
3061+
public List<Object> xrange(byte[] key, byte[] start, byte[] end) {
30623062
return executeCommand(commandObjects.xrange(key, start, end));
30633063
}
30643064

30653065
@Override
3066-
public List<byte[]> xrange(byte[] key, byte[] start, byte[] end, int count) {
3066+
public List<Object> xrange(byte[] key, byte[] start, byte[] end, int count) {
30673067
return executeCommand(commandObjects.xrange(key, start, end, count));
30683068
}
30693069

30703070
@Override
3071-
public List<byte[]> xrevrange(byte[] key, byte[] end, byte[] start) {
3071+
public List<Object> xrevrange(byte[] key, byte[] end, byte[] start) {
30723072
return executeCommand(commandObjects.xrevrange(key, end, start));
30733073
}
30743074

30753075
@Override
3076-
public List<byte[]> xrevrange(byte[] key, byte[] end, byte[] start, int count) {
3076+
public List<Object> xrevrange(byte[] key, byte[] end, byte[] start, int count) {
30773077
return executeCommand(commandObjects.xrevrange(key, end, start, count));
30783078
}
30793079

@@ -3178,12 +3178,12 @@ public List<Object> xinfoConsumers(byte[] key, byte[] group) {
31783178
}
31793179

31803180
@Override
3181-
public List<byte[]> xread(XReadParams xReadParams, Map.Entry<byte[], byte[]>... streams) {
3181+
public List<Object> xread(XReadParams xReadParams, Map.Entry<byte[], byte[]>... streams) {
31823182
return executeCommand(commandObjects.xread(xReadParams, streams));
31833183
}
31843184

31853185
@Override
3186-
public List<byte[]> xreadGroup(byte[] groupName, byte[] consumer, XReadGroupParams xReadGroupParams, Map.Entry<byte[], byte[]>... streams) {
3186+
public List<Object> xreadGroup(byte[] groupName, byte[] consumer, XReadGroupParams xReadGroupParams, Map.Entry<byte[], byte[]>... streams) {
31873187
return executeCommand(commandObjects.xreadGroup(groupName, consumer, xReadGroupParams, streams));
31883188
}
31893189
// Stream commands

src/main/java/redis/clients/jedis/commands/StreamBinaryCommands.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ default byte[] xadd(byte[] key, Map<byte[], byte[]> hash, XAddParams params) {
1515

1616
long xlen(byte[] key);
1717

18-
List<byte[]> xrange(byte[] key, byte[] start, byte[] end);
18+
List<Object> xrange(byte[] key, byte[] start, byte[] end);
1919

20-
List<byte[]> xrange(byte[] key, byte[] start, byte[] end, int count);
20+
List<Object> xrange(byte[] key, byte[] start, byte[] end, int count);
2121

22-
List<byte[]> xrevrange(byte[] key, byte[] end, byte[] start);
22+
List<Object> xrevrange(byte[] key, byte[] end, byte[] start);
2323

24-
List<byte[]> xrevrange(byte[] key, byte[] end, byte[] start, int count);
24+
List<Object> xrevrange(byte[] key, byte[] end, byte[] start, int count);
2525

2626
long xack(byte[] key, byte[] group, byte[]... ids);
2727

@@ -74,9 +74,9 @@ List<Object> xautoclaimJustId(byte[] key, byte[] groupName, byte[] consumerName,
7474

7575
List<Object> xinfoConsumers(byte[] key, byte[] group);
7676

77-
List<byte[]> xread(XReadParams xReadParams, Map.Entry<byte[], byte[]>... streams);
77+
List<Object> xread(XReadParams xReadParams, Map.Entry<byte[], byte[]>... streams);
7878

79-
List<byte[]> xreadGroup(byte[] groupName, byte[] consumer, XReadGroupParams xReadGroupParams,
79+
List<Object> xreadGroup(byte[] groupName, byte[] consumer, XReadGroupParams xReadGroupParams,
8080
Map.Entry<byte[], byte[]>... streams);
8181

8282
}

src/main/java/redis/clients/jedis/commands/StreamCommands.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -123,16 +123,6 @@ default StreamEntryID xadd(String key, Map<String, String> hash, XAddParams para
123123
*/
124124
long xgroupDelConsumer(String key, String groupName, String consumerName);
125125

126-
/**
127-
* XPENDING key group
128-
*/
129-
StreamPendingSummary xpending(String key, String groupName);
130-
131-
/**
132-
* XPENDING key group [[IDLE min-idle-time] start end count [consumer]]
133-
*/
134-
List<StreamPendingEntry> xpending(String key, String groupName, XPendingParams params);
135-
136126
/**
137127
* XDEL key ID [ID ...]
138128
*/
@@ -148,6 +138,16 @@ default StreamEntryID xadd(String key, Map<String, String> hash, XAddParams para
148138
*/
149139
long xtrim(String key, XTrimParams params);
150140

141+
/**
142+
* XPENDING key group
143+
*/
144+
StreamPendingSummary xpending(String key, String groupName);
145+
146+
/**
147+
* XPENDING key group [[IDLE min-idle-time] start end count [consumer]]
148+
*/
149+
List<StreamPendingEntry> xpending(String key, String groupName, XPendingParams params);
150+
151151
/**
152152
* {@code XCLAIM key group consumer min-idle-time <ID-1> ... <ID-N>
153153
* [IDLE <milliseconds>] [TIME <mstime>] [RETRYCOUNT <count>]

src/main/java/redis/clients/jedis/commands/StreamPipelineBinaryCommands.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@ default Response<byte[]> xadd(byte[] key, Map<byte[], byte[]> hash, XAddParams p
1616

1717
Response<Long> xlen(byte[] key);
1818

19-
Response<List<byte[]>> xrange(byte[] key, byte[] start, byte[] end);
19+
Response<List<Object>> xrange(byte[] key, byte[] start, byte[] end);
2020

21-
Response<List<byte[]>> xrange(byte[] key, byte[] start, byte[] end, int count);
21+
Response<List<Object>> xrange(byte[] key, byte[] start, byte[] end, int count);
2222

23-
Response<List<byte[]>> xrevrange(byte[] key, byte[] end, byte[] start);
23+
Response<List<Object>> xrevrange(byte[] key, byte[] end, byte[] start);
2424

25-
Response<List<byte[]>> xrevrange(byte[] key, byte[] end, byte[] start, int count);
25+
Response<List<Object>> xrevrange(byte[] key, byte[] end, byte[] start, int count);
2626

2727
Response<Long> xack(byte[] key, byte[] group, byte[]... ids);
2828

@@ -75,9 +75,9 @@ Response<List<Object>> xautoclaimJustId(byte[] key, byte[] groupName, byte[] con
7575

7676
Response<List<Object>> xinfoConsumers(byte[] key, byte[] group);
7777

78-
Response<List<byte[]>> xread(XReadParams xReadParams, Map.Entry<byte[], byte[]>... streams);
78+
Response<List<Object>> xread(XReadParams xReadParams, Map.Entry<byte[], byte[]>... streams);
7979

80-
Response<List<byte[]>> xreadGroup(byte[] groupName, byte[] consumer, XReadGroupParams xReadGroupParams,
81-
Map.Entry<byte[], byte[]>... streams);
80+
Response<List<Object>> xreadGroup(byte[] groupName, byte[] consumer,
81+
XReadGroupParams xReadGroupParams, Map.Entry<byte[], byte[]>... streams);
8282

8383
}

0 commit comments

Comments
 (0)