From 369b549b3c97a056f47fab16e3011dee9e2f74fc Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Thu, 8 Aug 2024 15:48:48 +0200 Subject: [PATCH] Default Lettuce shutdownQuietPeriod to zero. Use a lower timeout for faster shutdown. Also, the quiet period is no longer configured through the shutdown timeout. Closes #2945 --- .../lettuce/DefaultLettuceClientConfiguration.java | 4 ++-- .../connection/lettuce/LettuceClientConfiguration.java | 2 +- .../lettuce/LettuceClientConfigurationUnitTests.java | 9 ++++----- .../LettucePoolingClientConfigurationUnitTests.java | 4 ++-- 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/springframework/data/redis/connection/lettuce/DefaultLettuceClientConfiguration.java b/src/main/java/org/springframework/data/redis/connection/lettuce/DefaultLettuceClientConfiguration.java index c771163f9..05035f5fa 100644 --- a/src/main/java/org/springframework/data/redis/connection/lettuce/DefaultLettuceClientConfiguration.java +++ b/src/main/java/org/springframework/data/redis/connection/lettuce/DefaultLettuceClientConfiguration.java @@ -51,7 +51,7 @@ class DefaultLettuceClientConfiguration implements LettuceClientConfiguration { DefaultLettuceClientConfiguration(boolean useSsl, SslVerifyMode verifyMode, boolean startTls, @Nullable ClientResources clientResources, @Nullable ClientOptions clientOptions, @Nullable String clientName, @Nullable ReadFrom readFrom, @Nullable RedisCredentialsProviderFactory redisCredentialsProviderFactory, - Duration timeout, Duration shutdownTimeout, @Nullable Duration shutdownQuietPeriod) { + Duration timeout, Duration shutdownTimeout, Duration shutdownQuietPeriod) { this.useSsl = useSsl; this.verifyMode = verifyMode; @@ -63,7 +63,7 @@ class DefaultLettuceClientConfiguration implements LettuceClientConfiguration { this.redisCredentialsProviderFactory = Optional.ofNullable(redisCredentialsProviderFactory); this.timeout = timeout; this.shutdownTimeout = shutdownTimeout; - this.shutdownQuietPeriod = shutdownQuietPeriod != null ? shutdownQuietPeriod : shutdownTimeout; + this.shutdownQuietPeriod = shutdownQuietPeriod; } @Override diff --git a/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceClientConfiguration.java b/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceClientConfiguration.java index eea4e340c..91e243ffa 100644 --- a/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceClientConfiguration.java +++ b/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceClientConfiguration.java @@ -185,7 +185,7 @@ public interface LettuceClientConfiguration { @Nullable RedisCredentialsProviderFactory redisCredentialsProviderFactory; Duration timeout = Duration.ofSeconds(RedisURI.DEFAULT_TIMEOUT); Duration shutdownTimeout = Duration.ofMillis(100); - @Nullable Duration shutdownQuietPeriod; + Duration shutdownQuietPeriod = Duration.ZERO; LettuceClientConfigurationBuilder() {} diff --git a/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceClientConfigurationUnitTests.java b/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceClientConfigurationUnitTests.java index 261e5ea96..288aa4815 100644 --- a/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceClientConfigurationUnitTests.java +++ b/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceClientConfigurationUnitTests.java @@ -39,12 +39,11 @@ import org.springframework.data.redis.test.extension.LettuceTestClientResources; */ class LettuceClientConfigurationUnitTests { - @Test // DATAREDIS-574, DATAREDIS-576, DATAREDIS-667, DATAREDIS-918 + @Test // DATAREDIS-574, DATAREDIS-576, DATAREDIS-667, DATAREDIS-918, GH-2945 void shouldCreateEmptyConfiguration() { LettuceClientConfiguration configuration = LettuceClientConfiguration.defaultConfiguration(); - assertThat(configuration.isUseSsl()).isFalse(); assertThat(configuration.isVerifyPeer()).isTrue(); assertThat(configuration.getVerifyMode().equals(SslVerifyMode.FULL)); @@ -58,7 +57,7 @@ class LettuceClientConfigurationUnitTests { assertThat(configuration.getClientName()).isEmpty(); assertThat(configuration.getCommandTimeout()).isEqualTo(Duration.ofSeconds(60)); assertThat(configuration.getShutdownTimeout()).isEqualTo(Duration.ofMillis(100)); - assertThat(configuration.getShutdownQuietPeriod()).isEqualTo(Duration.ofMillis(100)); + assertThat(configuration.getShutdownQuietPeriod()).isEqualTo(Duration.ZERO); } @Test // DATAREDIS-574, DATAREDIS-576, DATAREDIS-667 @@ -92,13 +91,13 @@ class LettuceClientConfigurationUnitTests { } @Test // DATAREDIS-881 - void shutdownQuietPeriodShouldDefaultToTimeout() { + void shutdownQuietPeriodShouldDefaultInitialValue() { LettuceClientConfiguration configuration = LettuceClientConfiguration.builder() .shutdownTimeout(Duration.ofSeconds(42)).build(); assertThat(configuration.getShutdownTimeout()).isEqualTo(Duration.ofSeconds(42)); - assertThat(configuration.getShutdownQuietPeriod()).isEqualTo(Duration.ofSeconds(42)); + assertThat(configuration.getShutdownQuietPeriod()).isEqualTo(Duration.ZERO); } @Test // DATAREDIS-576 diff --git a/src/test/java/org/springframework/data/redis/connection/lettuce/LettucePoolingClientConfigurationUnitTests.java b/src/test/java/org/springframework/data/redis/connection/lettuce/LettucePoolingClientConfigurationUnitTests.java index 0cae2e9ed..ba9fd4a31 100644 --- a/src/test/java/org/springframework/data/redis/connection/lettuce/LettucePoolingClientConfigurationUnitTests.java +++ b/src/test/java/org/springframework/data/redis/connection/lettuce/LettucePoolingClientConfigurationUnitTests.java @@ -40,7 +40,7 @@ import org.springframework.data.redis.test.extension.LettuceTestClientResources; */ class LettucePoolingClientConfigurationUnitTests { - @Test // DATAREDIS-667, DATAREDIS-918 + @Test // DATAREDIS-667, DATAREDIS-918, GH-2945 void shouldCreateEmptyConfiguration() { LettucePoolingClientConfiguration configuration = LettucePoolingClientConfiguration.defaultConfiguration(); @@ -58,7 +58,7 @@ class LettucePoolingClientConfigurationUnitTests { assertThat(configuration.getClientResources()).isEmpty(); assertThat(configuration.getCommandTimeout()).isEqualTo(Duration.ofSeconds(60)); assertThat(configuration.getShutdownTimeout()).isEqualTo(Duration.ofMillis(100)); - assertThat(configuration.getShutdownQuietPeriod()).isEqualTo(Duration.ofMillis(100)); + assertThat(configuration.getShutdownQuietPeriod()).isEqualTo(Duration.ZERO); } @Test // DATAREDIS-667