Skip to content

Add support for scripting commands with Jedis Cluster [DATAREDIS-1005] #1576

Closed
@spring-projects-issues

Description

@spring-projects-issues

Pavel Khokhlov opened DATAREDIS-1005 and commented

Current implementation of JedisClusterConnection doesn't support Eval & EvalSha commands
(see: https://redis.io/commands/eval, https://redis.io/commands/evalsha)

The reason is class:
org.springframework.data.redis.connection.jedis.JedisClusterScriptingCommands
do not have implementations of required commands:

@Override
public <T> T eval(byte[] script, ReturnType returnType, int numKeys, byte[]... keysAndArgs) {
   throw new InvalidDataAccessApiUsageException("Eval is not supported in cluster environment.");
}

@Override
public <T> T evalSha(String scriptSha, ReturnType returnType, int numKeys, byte[]... keysAndArgs) {
   throw new InvalidDataAccessApiUsageException("EvalSha is not supported in cluster environment.");
}

Eval & EvalSha commands has to be implemented.

For now we have an exception:

org.springframework.dao.InvalidDataAccessApiUsageException: EvalSha is not supported in cluster environment.
at org.springframework.data.redis.connection.jedis.JedisClusterScriptingCommands.evalSha(JedisClusterScriptingCommands.java:83)
at org.springframework.data.redis.connection.DefaultedRedisConnection.evalSha(DefaultedRedisConnection.java:1440)
at jdk.internal.reflect.GeneratedMethodAccessor611.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.springframework.data.redis.core.CloseSuppressingInvocationHandler.invoke(CloseSuppressingInvocationHandler.java:61)
at com.sun.proxy.$Proxy179.evalSha(Unknown Source)
at org.springframework.data.redis.core.script.DefaultScriptExecutor.eval(DefaultScriptExecutor.java:77)
at org.springframework.data.redis.core.script.DefaultScriptExecutor.lambda$execute$0(DefaultScriptExecutor.java:68)
at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:227)

Affects: 2.1.9 (Lovelace SR9), 2.2 RC2 (Moore)

Referenced from: pull request #460, and commits e9b5e6e, 988a7e7

2 votes, 2 watchers

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions