diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jredis/JredisConnection.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jredis/JredisConnection.java index 85a67e50a..0ba6b3373 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jredis/JredisConnection.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jredis/JredisConnection.java @@ -27,6 +27,7 @@ import org.jredis.JRedis; import org.jredis.RedisException; import org.jredis.Sort; import org.jredis.Query.Support; +import org.jredis.ri.alphazero.JRedisService; import org.springframework.dao.DataAccessException; import org.springframework.data.keyvalue.UncategorizedKeyvalueStoreException; import org.springframework.data.keyvalue.redis.UncategorizedRedisException; @@ -35,6 +36,7 @@ import org.springframework.data.keyvalue.redis.connection.MessageListener; import org.springframework.data.keyvalue.redis.connection.RedisConnection; import org.springframework.data.keyvalue.redis.connection.SortParameters; import org.springframework.data.keyvalue.redis.connection.Subscription; +import org.springframework.util.Assert; /** * {@code RedisConnection} implementation on top of JRedis library. @@ -44,6 +46,7 @@ import org.springframework.data.keyvalue.redis.connection.Subscription; public class JredisConnection implements RedisConnection { private final JRedis jredis; + private final boolean isPool; /** * Constructs a new JredisConnection instance. @@ -51,7 +54,10 @@ public class JredisConnection implements RedisConnection { * @param jredis JRedis connection */ public JredisConnection(JRedis jredis) { + Assert.notNull(jredis, "a not-null instance required"); this.jredis = jredis; + // required since Jredis combines the pool and the connection under the same interface/class + this.isPool = (jredis instanceof JRedisService); } protected DataAccessException convertJedisAccessException(Exception ex) { @@ -63,8 +69,11 @@ public class JredisConnection implements RedisConnection { @Override public void close() throws UncategorizedRedisException { - jredis.quit(); - + // don't actually close the connection + // if a pool is used + if (!isPool) { + jredis.quit(); + } } @Override @@ -193,7 +202,8 @@ public class JredisConnection implements RedisConnection { @Override public void setConfig(String param, String value) { - throw new UnsupportedOperationException(); } + throw new UnsupportedOperationException(); + } @Override public void shutdown() { diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jredis/JredisConnectionFactory.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jredis/JredisConnectionFactory.java index f14663753..c6c5ca649 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jredis/JredisConnectionFactory.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jredis/JredisConnectionFactory.java @@ -97,7 +97,7 @@ public class JredisConnectionFactory implements InitializingBean, DisposableBean @Override public void destroy() { if (usePool && pool != null) { - //pool.quit(); + pool.quit(); pool = null; } } diff --git a/spring-data-redis/src/test/java/org/springframework/data/keyvalue/redis/connection/jredis/JRedisConnectionIntegrationTests.java b/spring-data-redis/src/test/java/org/springframework/data/keyvalue/redis/connection/jredis/JRedisConnectionIntegrationTests.java index 6095d53a0..91263aabd 100644 --- a/spring-data-redis/src/test/java/org/springframework/data/keyvalue/redis/connection/jredis/JRedisConnectionIntegrationTests.java +++ b/spring-data-redis/src/test/java/org/springframework/data/keyvalue/redis/connection/jredis/JRedisConnectionIntegrationTests.java @@ -31,7 +31,7 @@ public class JRedisConnectionIntegrationTests extends AbstractConnectionIntegrat factory.setPort(SettingsUtils.getPort()); factory.setHostName(SettingsUtils.getHost()); - factory.setUsePool(false); + factory.setUsePool(true); factory.afterPropertiesSet(); } diff --git a/spring-data-redis/src/test/java/org/springframework/data/keyvalue/redis/support/collections/CollectionTestParams.java b/spring-data-redis/src/test/java/org/springframework/data/keyvalue/redis/support/collections/CollectionTestParams.java index e3c7d87f5..0d1c07145 100644 --- a/spring-data-redis/src/test/java/org/springframework/data/keyvalue/redis/support/collections/CollectionTestParams.java +++ b/spring-data-redis/src/test/java/org/springframework/data/keyvalue/redis/support/collections/CollectionTestParams.java @@ -46,7 +46,7 @@ public abstract class CollectionTestParams { RedisTemplate personTemplate = new RedisTemplate(jedisConnFactory); JredisConnectionFactory jredisConnFactory = new JredisConnectionFactory(); - jredisConnFactory.setUsePool(false); + jredisConnFactory.setUsePool(true); jredisConnFactory.setPort(SettingsUtils.getPort()); jredisConnFactory.setHostName(SettingsUtils.getHost()); diff --git a/spring-data-redis/src/test/java/org/springframework/data/keyvalue/redis/support/collections/RedisMapTests.java b/spring-data-redis/src/test/java/org/springframework/data/keyvalue/redis/support/collections/RedisMapTests.java index 09a9dc2f1..0fbf94f22 100644 --- a/spring-data-redis/src/test/java/org/springframework/data/keyvalue/redis/support/collections/RedisMapTests.java +++ b/spring-data-redis/src/test/java/org/springframework/data/keyvalue/redis/support/collections/RedisMapTests.java @@ -60,7 +60,7 @@ public class RedisMapTests extends AbstractRedisMapTests { JredisConnectionFactory jredisConnFactory = new JredisConnectionFactory(); - jredisConnFactory.setUsePool(false); + jredisConnFactory.setUsePool(true); jredisConnFactory.setPort(SettingsUtils.getPort()); jredisConnFactory.setHostName(SettingsUtils.getHost());