Skip to content

Commit 5c636bb

Browse files
smagellanmarcosnils
authored andcommitted
Improvement (issue redis#1352): (redis#1353)
evalsha should throw specialized exception if redis answers with NOSCRIPT message.
1 parent 73505a1 commit 5c636bb

3 files changed

Lines changed: 17 additions & 1 deletion

File tree

‎src/main/java/redis/clients/jedis/Protocol.java‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import redis.clients.jedis.exceptions.JedisConnectionException;
1212
import redis.clients.jedis.exceptions.JedisDataException;
1313
import redis.clients.jedis.exceptions.JedisMovedDataException;
14+
import redis.clients.jedis.exceptions.JedisNoScriptException;
1415
import redis.clients.util.RedisInputStream;
1516
import redis.clients.util.RedisOutputStream;
1617
import redis.clients.util.SafeEncoder;
@@ -21,6 +22,7 @@ public final class Protocol {
2122
private static final String MOVED_RESPONSE = "MOVED";
2223
private static final String CLUSTERDOWN_RESPONSE = "CLUSTERDOWN";
2324
private static final String BUSY_RESPONSE = "BUSY";
25+
private static final String NOSCRIPT_RESPONSE = "NOSCRIPT";
2426

2527
public static final String DEFAULT_HOST = "localhost";
2628
public static final int DEFAULT_PORT = 6379;
@@ -119,6 +121,8 @@ private static void processError(final RedisInputStream is) {
119121
throw new JedisClusterException(message);
120122
} else if (message.startsWith(BUSY_RESPONSE)) {
121123
throw new JedisBusyException(message);
124+
} else if (message.startsWith(NOSCRIPT_RESPONSE) ) {
125+
throw new JedisNoScriptException(message);
122126
}
123127
throw new JedisDataException(message);
124128
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package redis.clients.jedis.exceptions;
2+
3+
public class JedisNoScriptException extends JedisDataException {
4+
private static final long serialVersionUID = 4674378093072060731L;
5+
6+
public JedisNoScriptException(final String message) { super(message); }
7+
8+
public JedisNoScriptException(final Throwable cause) { super(cause); }
9+
10+
public JedisNoScriptException(final String message, final Throwable cause) { super(message, cause); }
11+
}

‎src/test/java/redis/clients/jedis/tests/commands/ScriptingCommandsTest.java‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import redis.clients.jedis.Jedis;
1818
import redis.clients.jedis.exceptions.JedisConnectionException;
1919
import redis.clients.jedis.exceptions.JedisDataException;
20+
import redis.clients.jedis.exceptions.JedisNoScriptException;
2021
import redis.clients.jedis.tests.utils.ClientKillerUtil;
2122
import redis.clients.util.SafeEncoder;
2223

@@ -127,7 +128,7 @@ public void evalsha() {
127128
assertEquals("bar", result);
128129
}
129130

130-
@Test(expected = JedisDataException.class)
131+
@Test(expected = JedisNoScriptException.class)
131132
public void evalshaShaNotFound() {
132133
jedis.evalsha("ffffffffffffffffffffffffffffffffffffffff");
133134
}

0 commit comments

Comments
 (0)