From 7f9aca031a1ec346e52333692af335056b441fd9 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Fri, 28 Jun 2019 13:24:17 +0200 Subject: [PATCH] =?UTF-8?q?DATAREDIS-588=20-=20Use=20JedisCluster.psetex(?= =?UTF-8?q?=E2=80=A6)=20instead=20dispatching=20to=20a=20node.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We now use JedisCluster's psetex command instead of looking up the topology and dispatching the command ourselves. Original Pull Request: #463 --- .../connection/jedis/JedisClusterStringCommands.java | 11 +++++------ .../connection/jedis/JedisClusterConnectionTests.java | 6 +++--- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterStringCommands.java b/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterStringCommands.java index 151b8879c..9ed494495 100644 --- a/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterStringCommands.java +++ b/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterStringCommands.java @@ -33,7 +33,6 @@ import org.springframework.data.redis.connection.BitFieldSubCommands; import org.springframework.data.redis.connection.ClusterSlotHashUtil; import org.springframework.data.redis.connection.RedisStringCommands; import org.springframework.data.redis.connection.convert.Converters; -import org.springframework.data.redis.connection.jedis.JedisClusterConnection.JedisClusterCommandCallback; import org.springframework.data.redis.connection.jedis.JedisClusterConnection.JedisMultiKeyClusterCommandCallback; import org.springframework.data.redis.connection.lettuce.LettuceConverters; import org.springframework.data.redis.core.types.Expiration; @@ -189,11 +188,11 @@ class JedisClusterStringCommands implements RedisStringCommands { Assert.notNull(key, "Key must not be null!"); Assert.notNull(value, "Value must not be null!"); - return Converters.stringToBoolean(connection.getClusterCommandExecutor() - .executeCommandOnSingleNode( - (JedisClusterCommandCallback) client -> client.psetex(key, milliseconds, value), - connection.getTopologyProvider().getTopology().getKeyServingMasterNode(key)) - .getValue()); + try { + return Converters.stringToBoolean(connection.getCluster().psetex(key, milliseconds, value)); + } catch (Exception ex) { + throw convertJedisAccessException(ex); + } } /* diff --git a/src/test/java/org/springframework/data/redis/connection/jedis/JedisClusterConnectionTests.java b/src/test/java/org/springframework/data/redis/connection/jedis/JedisClusterConnectionTests.java index bd0c79fb2..35ce2c872 100644 --- a/src/test/java/org/springframework/data/redis/connection/jedis/JedisClusterConnectionTests.java +++ b/src/test/java/org/springframework/data/redis/connection/jedis/JedisClusterConnectionTests.java @@ -1836,9 +1836,9 @@ public class JedisClusterConnectionTests implements ClusterConnectionTests { nativeConnection.set(KEY_1_BYTES, VALUE_1_BYTES); clusterConnection.set(KEY_1_BYTES, VALUE_2_BYTES, Expiration.persistent(), SetOption.ifPresent()); - assertThat(nativeConnection.exists(KEY_1_BYTES), is(true)); - assertThat(clusterConnection.get(KEY_1_BYTES), is(VALUE_2_BYTES)); - assertThat(nativeConnection.ttl(KEY_1_BYTES), is(-1L)); + assertThat(nativeConnection.exists(KEY_1_BYTES)).isTrue(); + assertThat(clusterConnection.get(KEY_1_BYTES)).isEqualTo(VALUE_2_BYTES); + assertThat(nativeConnection.ttl(KEY_1_BYTES)).isEqualTo(-1L); } @Test // DATAREDIS-315