From 99a6cb0827cd7906ce7bee969f922a3b91e932e3 Mon Sep 17 00:00:00 2001 From: Jongyeol Choi Date: Thu, 4 Aug 2016 19:32:09 +0900 Subject: [PATCH] Store error at output-level when using NestedMultiOutput #328 NestedMultiOutput now stores errors in the command output and not inside the output content to propagate errors correctly. --- .../com/lambdaworks/redis/output/NestedMultiOutput.java | 6 ------ .../java/com/lambdaworks/redis/CommandInternalsTest.java | 2 +- .../java/com/lambdaworks/redis/ScriptingCommandTest.java | 8 ++++++++ 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/lambdaworks/redis/output/NestedMultiOutput.java b/src/main/java/com/lambdaworks/redis/output/NestedMultiOutput.java index 2b2ab82d58..03f7c5a837 100644 --- a/src/main/java/com/lambdaworks/redis/output/NestedMultiOutput.java +++ b/src/main/java/com/lambdaworks/redis/output/NestedMultiOutput.java @@ -8,7 +8,6 @@ import java.util.LinkedList; import java.util.List; -import com.lambdaworks.redis.RedisCommandExecutionException; import com.lambdaworks.redis.codec.RedisCodec; import com.lambdaworks.redis.protocol.CommandOutput; @@ -39,11 +38,6 @@ public void set(ByteBuffer bytes) { output.add(bytes == null ? null : codec.decodeValue(bytes)); } - @Override - public void setError(ByteBuffer error) { - output.add(new RedisCommandExecutionException(decodeAscii(error))); - } - @Override public void complete(int depth) { if (depth > 0 && depth < this.depth) { diff --git a/src/test/java/com/lambdaworks/redis/CommandInternalsTest.java b/src/test/java/com/lambdaworks/redis/CommandInternalsTest.java index 6da0c41e88..23d65c97d0 100644 --- a/src/test/java/com/lambdaworks/redis/CommandInternalsTest.java +++ b/src/test/java/com/lambdaworks/redis/CommandInternalsTest.java @@ -129,7 +129,7 @@ public String get() throws RedisException { public void nestedMultiError() throws Exception { NestedMultiOutput output = new NestedMultiOutput(codec); output.setError(buffer("Oops!")); - assertThat(output.get().get(0) instanceof RedisException).isTrue(); + assertThat(output.getError()).isNotNull(); } @Test diff --git a/src/test/java/com/lambdaworks/redis/ScriptingCommandTest.java b/src/test/java/com/lambdaworks/redis/ScriptingCommandTest.java index 3f3185b81e..d168eda972 100644 --- a/src/test/java/com/lambdaworks/redis/ScriptingCommandTest.java +++ b/src/test/java/com/lambdaworks/redis/ScriptingCommandTest.java @@ -64,6 +64,14 @@ public void evalsha() throws Exception { redis.evalsha(redis.digest("return 1 + 1 == 4"), INTEGER); } + @Test + public void evalshaWithMulti() throws Exception { + redis.scriptFlush(); + String digest = redis.digest("return {1234, 5678}"); + exception.expectMessage("NOSCRIPT No matching script. Please use EVAL."); + redis.evalsha(digest, MULTI); + } + @Test public void evalshaWithKeys() throws Exception { redis.scriptFlush();