diff --git a/src/main/java/org/springframework/data/redis/connection/jedis/JedisListCommands.java b/src/main/java/org/springframework/data/redis/connection/jedis/JedisListCommands.java index c4cf9928d..66b4d4119 100644 --- a/src/main/java/org/springframework/data/redis/connection/jedis/JedisListCommands.java +++ b/src/main/java/org/springframework/data/redis/connection/jedis/JedisListCommands.java @@ -72,7 +72,7 @@ class JedisListCommands implements RedisListCommands { return connection.invoke().just(BinaryJedis::lpos, MultiKeyPipelineBase::lpos, key, element, params, count); } - return connection.invoke().from(BinaryJedis::lpos, MultiKeyPipelineBase::lpos, key, element, params).get(Collections::singletonList); + return connection.invoke().from(BinaryJedis::lpos, MultiKeyPipelineBase::lpos, key, element, params).getOrElse(Collections::singletonList, Collections::emptyList); } /* diff --git a/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceListCommands.java b/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceListCommands.java index 8c3500772..459f0f625 100644 --- a/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceListCommands.java +++ b/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceListCommands.java @@ -71,7 +71,7 @@ class LettuceListCommands implements RedisListCommands { return connection.invoke().just(RedisListAsyncCommands::lpos, key, element, count, args); } - return connection.invoke().from(RedisListAsyncCommands::lpos, key, element, args).get(Collections::singletonList); + return connection.invoke().from(RedisListAsyncCommands::lpos, key, element, args).getOrElse(Collections::singletonList, Collections::emptyList); } /* diff --git a/src/test/java/org/springframework/data/redis/connection/AbstractConnectionIntegrationTests.java b/src/test/java/org/springframework/data/redis/connection/AbstractConnectionIntegrationTests.java index 88a5db381..b305a44d8 100644 --- a/src/test/java/org/springframework/data/redis/connection/AbstractConnectionIntegrationTests.java +++ b/src/test/java/org/springframework/data/redis/connection/AbstractConnectionIntegrationTests.java @@ -1464,6 +1464,16 @@ public abstract class AbstractConnectionIntegrationTests { assertThat((List) getResults().get(1)).containsExactly(2L, 6L, 7L); } + @Test // GH-1957 + @EnabledOnCommand("LPOS") + void lPosNonExisting() { + + actual.add(connection.rPush("mylist", "a", "b", "c", "1", "2", "3", "c", "c")); + actual.add(connection.lPos("mylist", "x", null, null)); + + assertThat((List) getResults().get(1)).isEmpty(); + } + // Set operations @Test 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 50f1b79be..7029daaa1 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 @@ -2534,4 +2534,14 @@ public class JedisClusterConnectionTests implements ClusterConnectionTests { assertThat(result).containsExactly(2L, 6L, 7L); } + + @Test // GH-1957 + @EnabledOnCommand("LPOS") + void lPosNonExisting() { + + nativeConnection.rpush(KEY_1, "a", "b", "c", "1", "2", "3", "c", "c"); + List result = clusterConnection.listCommands().lPos(KEY_1_BYTES, "x".getBytes(StandardCharsets.UTF_8), null, null); + + assertThat(result).isEmpty(); + } }