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