From a18a8d4c7e4aa457347a7131d653526d43ccf2ff Mon Sep 17 00:00:00 2001 From: Jennifer Hickey Date: Mon, 15 Jul 2013 17:40:50 -0700 Subject: [PATCH] Fix SRP exception on select in transaction DATAREDIS-220 --- .../data/redis/connection/srp/SrpConnection.java | 1 + .../connection/AbstractConnectionIntegrationTests.java | 6 ++++++ .../jedis/JedisConnectionPipelineIntegrationTests.java | 5 +++++ .../connection/jredis/JRedisConnectionIntegrationTests.java | 4 ++++ .../lettuce/LettuceConnectionIntegrationTests.java | 2 +- .../lettuce/LettuceConnectionPipelineIntegrationTests.java | 5 +++++ 6 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/springframework/data/redis/connection/srp/SrpConnection.java b/src/main/java/org/springframework/data/redis/connection/srp/SrpConnection.java index d9e32a590..68a8d2e47 100644 --- a/src/main/java/org/springframework/data/redis/connection/srp/SrpConnection.java +++ b/src/main/java/org/springframework/data/redis/connection/srp/SrpConnection.java @@ -592,6 +592,7 @@ public class SrpConnection implements RedisConnection { try { if (isPipelined()) { pipeline(pipeline.select(dbIndex)); + return; } client.select(dbIndex); } catch (Exception ex) { 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 f4d788aac..f41d6f956 100644 --- a/src/test/java/org/springframework/data/redis/connection/AbstractConnectionIntegrationTests.java +++ b/src/test/java/org/springframework/data/redis/connection/AbstractConnectionIntegrationTests.java @@ -98,6 +98,12 @@ public abstract class AbstractConnectionIntegrationTests { connection = null; } + @Test + public void testSelect() { + // Make sure this doesn't throw Exception + connection.select(1); + } + @Test @IfProfileValue(name = "runLongTests", value = "true") public void testExpire() throws Exception { diff --git a/src/test/java/org/springframework/data/redis/connection/jedis/JedisConnectionPipelineIntegrationTests.java b/src/test/java/org/springframework/data/redis/connection/jedis/JedisConnectionPipelineIntegrationTests.java index b0e96e634..8e9d550fb 100644 --- a/src/test/java/org/springframework/data/redis/connection/jedis/JedisConnectionPipelineIntegrationTests.java +++ b/src/test/java/org/springframework/data/redis/connection/jedis/JedisConnectionPipelineIntegrationTests.java @@ -141,6 +141,11 @@ public class JedisConnectionPipelineIntegrationTests extends super.testZRevRangeByScoreWithScoresOffsetCount(); } + @Test(expected = RedisSystemException.class) + public void testSelect() { + super.testSelect(); + } + // Overrides, usually due to return values being Long vs Boolean or Set vs // List diff --git a/src/test/java/org/springframework/data/redis/connection/jredis/JRedisConnectionIntegrationTests.java b/src/test/java/org/springframework/data/redis/connection/jredis/JRedisConnectionIntegrationTests.java index 48a434748..3ecc19980 100644 --- a/src/test/java/org/springframework/data/redis/connection/jredis/JRedisConnectionIntegrationTests.java +++ b/src/test/java/org/springframework/data/redis/connection/jredis/JRedisConnectionIntegrationTests.java @@ -274,6 +274,10 @@ public class JRedisConnectionIntegrationTests extends AbstractConnectionIntegrat super.testZRevRangeByScoreWithScoresOffsetCount(); } + @Test(expected = UnsupportedOperationException.class) + public void testSelect() { + super.testSelect(); + } // Jredis returns null for rPush @Test diff --git a/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionIntegrationTests.java b/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionIntegrationTests.java index fb23a483e..5ab9e9dd3 100644 --- a/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionIntegrationTests.java +++ b/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionIntegrationTests.java @@ -123,7 +123,7 @@ public class LettuceConnectionIntegrationTests extends AbstractConnectionIntegra @Test(expected = UnsupportedOperationException.class) public void testSelect() { - connection.select(1); + super.testSelect(); } @Test diff --git a/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionPipelineIntegrationTests.java b/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionPipelineIntegrationTests.java index f82517526..a2fc5a6c8 100644 --- a/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionPipelineIntegrationTests.java +++ b/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionPipelineIntegrationTests.java @@ -60,6 +60,11 @@ public class LettuceConnectionPipelineIntegrationTests extends public void testMultiDiscard() { } + @Test(expected=UnsupportedOperationException.class) + public void testSelect() { + super.testSelect(); + } + // Overrides, usually due to return values being Long vs Boolean or Set vs // List