DATAREDIS-918 - Enable Lettuce's global timeouts by default.

LettuceClientConfiguration now enables Lettuce's global timeouts by default to enable timeouts using the reactive API. This change prevents hanging Redis commands due to a blocked connection or when Redis is down. Timeouts are enabled through defaulting so setting ClientOptions or ClusterClientOptions overrides this behavior.

Original Pull Request: #381
This commit is contained in:
Mark Paluch
2019-01-07 11:58:54 +01:00
committed by Christoph Strobl
parent 8f209e3668
commit 62e48be873
4 changed files with 18 additions and 8 deletions

View File

@@ -34,7 +34,7 @@ import org.junit.Test;
*/
public class LettuceClientConfigurationUnitTests {
@Test // DATAREDIS-574, DATAREDIS-576, DATAREDIS-667
@Test // DATAREDIS-574, DATAREDIS-576, DATAREDIS-667, DATAREDIS-918
public void shouldCreateEmptyConfiguration() {
LettuceClientConfiguration configuration = LettuceClientConfiguration.defaultConfiguration();
@@ -43,7 +43,11 @@ public class LettuceClientConfigurationUnitTests {
assertThat(configuration.isUseSsl()).isFalse();
assertThat(configuration.isVerifyPeer()).isTrue();
assertThat(configuration.isStartTls()).isFalse();
assertThat(configuration.getClientOptions()).isEmpty();
assertThat(configuration.getClientOptions()).hasValueSatisfying(actual -> {
TimeoutOptions timeoutOptions = actual.getTimeoutOptions();
assertThat(timeoutOptions.isTimeoutCommands()).isTrue();
});
assertThat(configuration.getClientResources()).isEmpty();
assertThat(configuration.getClientName()).isEmpty();
assertThat(configuration.getCommandTimeout()).isEqualTo(Duration.ofSeconds(60));

View File

@@ -18,6 +18,7 @@ package org.springframework.data.redis.connection.lettuce;
import static org.assertj.core.api.Assertions.*;
import io.lettuce.core.ClientOptions;
import io.lettuce.core.TimeoutOptions;
import io.lettuce.core.resource.ClientResources;
import java.time.Duration;
@@ -33,7 +34,7 @@ import org.junit.Test;
*/
public class LettucePoolingClientConfigurationUnitTests {
@Test // DATAREDIS-667
@Test // DATAREDIS-667, DATAREDIS-918
public void shouldCreateEmptyConfiguration() {
LettucePoolingClientConfiguration configuration = LettucePoolingClientConfiguration.defaultConfiguration();
@@ -42,7 +43,11 @@ public class LettucePoolingClientConfigurationUnitTests {
assertThat(configuration.isUseSsl()).isFalse();
assertThat(configuration.isVerifyPeer()).isTrue();
assertThat(configuration.isStartTls()).isFalse();
assertThat(configuration.getClientOptions()).isEmpty();
assertThat(configuration.getClientOptions()).hasValueSatisfying(actual -> {
TimeoutOptions timeoutOptions = actual.getTimeoutOptions();
assertThat(timeoutOptions.isTimeoutCommands()).isTrue();
});
assertThat(configuration.getClientResources()).isEmpty();
assertThat(configuration.getCommandTimeout()).isEqualTo(Duration.ofSeconds(60));
assertThat(configuration.getShutdownTimeout()).isEqualTo(Duration.ofMillis(100));