diff --git a/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceClusterConnection.java b/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceClusterConnection.java index ae5f63858..1e7aacfa0 100644 --- a/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceClusterConnection.java +++ b/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceClusterConnection.java @@ -115,7 +115,6 @@ public class LettuceClusterConnection extends LettuceConnection implements Defau this.clusterClient = clusterClient; this.topologyProvider = new LettuceClusterTopologyProvider(clusterClient); this.clusterCommandExecutor = executor; - this.disposeClusterCommandExecutorOnClose = false; } /* diff --git a/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactory.java b/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactory.java index 2ac7fe954..4050aef85 100644 --- a/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactory.java +++ b/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactory.java @@ -272,7 +272,7 @@ public class LettuceConnectionFactory throw new InvalidDataAccessApiUsageException("Cluster is not configured!"); } - return new LettuceClusterConnection((RedisClusterClient) client, Duration.ofMillis(getTimeout()), + return new LettuceClusterConnection((RedisClusterClient) client, clientConfiguration.getCommandTimeout(), clusterCommandExecutor); } diff --git a/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactoryUnitTests.java b/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactoryUnitTests.java index ff038e159..66f4bb171 100644 --- a/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactoryUnitTests.java +++ b/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactoryUnitTests.java @@ -40,6 +40,7 @@ import org.junit.Before; import org.junit.Test; import org.springframework.data.redis.ConnectionFactoryTracker; import org.springframework.data.redis.connection.RedisClusterConfiguration; +import org.springframework.data.redis.connection.RedisClusterConnection; import org.springframework.data.redis.connection.RedisPassword; import org.springframework.data.redis.connection.RedisSentinelConfiguration; import org.springframework.data.redis.connection.RedisStandaloneConfiguration; @@ -488,22 +489,33 @@ public class LettuceConnectionFactoryUnitTests { connectionFactory.setUseSsl(false); } - @Test // DATAREDIS-676 + @Test // DATAREDIS-676 public void timeoutShouldBePassedOnToClusterConnection() { LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory(clusterConfig); + connectionFactory.setShutdownTimeout(0); connectionFactory.setTimeout(2000); connectionFactory.afterPropertiesSet(); + ConnectionFactoryTracker.add(connectionFactory); - assertThat(ReflectionTestUtils.getField(connectionFactory.getClusterConnection(), "timeout"), is(equalTo(2000L))); + RedisClusterConnection clusterConnection = connectionFactory.getClusterConnection(); + assertThat(ReflectionTestUtils.getField(clusterConnection, "timeout"), is(equalTo(2000L))); + + clusterConnection.close(); } - @Test // DATAREDIS-676 + @Test // DATAREDIS-676 public void timeoutSetOnClientConfigShouldBePassedOnToClusterConnection() { - LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory(clusterConfig, LettuceClientConfiguration.builder().commandTimeout(Duration.ofSeconds(2)).build()); - connectionFactory.afterPropertiesSet(); + LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory(clusterConfig, LettuceClientConfiguration + .builder().commandTimeout(Duration.ofSeconds(2)).shutdownTimeout(Duration.ZERO).build()); - assertThat(ReflectionTestUtils.getField(connectionFactory.getClusterConnection(), "timeout"), is(equalTo(2000L))); + connectionFactory.afterPropertiesSet(); + ConnectionFactoryTracker.add(connectionFactory); + + RedisClusterConnection clusterConnection = connectionFactory.getClusterConnection(); + assertThat(ReflectionTestUtils.getField(clusterConnection, "timeout"), is(equalTo(2000L))); + + clusterConnection.close(); } }