Skip to content

Commit 7ddb830

Browse files
authored
When in pub/sub mode, relay also responses of type double (#3210)
1 parent 341cdad commit 7ddb830

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

src/main/java/io/lettuce/core/output/ReplayOutput.java

+20
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,11 @@ public void set(long integer) {
3333
output.add(new Integer(integer));
3434
}
3535

36+
@Override
37+
public void set(double number) {
38+
output.add(new Double(number));
39+
}
40+
3641
@Override
3742
public void setError(ByteBuffer error) {
3843
error.mark();
@@ -130,6 +135,21 @@ protected void replay(CommandOutput<?, ?, ?> target) {
130135

131136
}
132137

138+
static class Double extends Signal {
139+
140+
final double message;
141+
142+
Double(double message) {
143+
this.message = message;
144+
}
145+
146+
@Override
147+
protected void replay(CommandOutput<?, ?, ?> target) {
148+
target.set(message);
149+
}
150+
151+
}
152+
133153
public static class ErrorBytes extends BulkStringSupport {
134154

135155
ErrorBytes(ByteBuffer message) {

src/test/java/io/lettuce/core/pubsub/PubSubCommandIntegrationTests.java

+10
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import java.util.List;
2929
import java.util.Map;
3030
import java.util.concurrent.BlockingQueue;
31+
import java.util.concurrent.ExecutionException;
3132
import java.util.concurrent.TimeUnit;
3233
import java.util.concurrent.atomic.AtomicReference;
3334
import java.util.regex.Matcher;
@@ -543,6 +544,15 @@ void resubscribeShardChannelsOnReconnect() throws Exception {
543544
assertThat(messages.take()).isEqualTo(shardMessage);
544545
}
545546

547+
@Test
548+
void interleaveCommands() throws ExecutionException, InterruptedException {
549+
550+
// relay Double and Long
551+
assertThat(pubsub.zadd("myzset", 1.0, "one").get()).isEqualTo(1L);
552+
assertThat(pubsub.zadd("myzset", 2.0, "two").get()).isEqualTo(1L);
553+
assertThat(pubsub.zpopmin("myzset", 1).get().get(0).getValue()).isEqualTo("one");
554+
}
555+
546556
@Test
547557
void adapter() throws Exception {
548558
final BlockingQueue<Long> localCounts = LettuceFactories.newBlockingQueue();

0 commit comments

Comments
 (0)