Skip to content

Commit 8f98af1

Browse files
andreacomochristophstrobl
authored andcommitted
DATAREDIS-1142 - Use Lettuce reactive cluster connection if configured.
Original Pull Request: #529
1 parent 5aea626 commit 8f98af1

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactory.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@
9090
* @author Balázs Németh
9191
* @author Ruben Cervilla
9292
* @author Luis De Bello
93+
* @author Andrea Como
9394
*/
9495
public class LettuceConnectionFactory
9596
implements InitializingBean, DisposableBean, RedisConnectionFactory, ReactiveRedisConnectionFactory {
@@ -425,6 +426,10 @@ protected LettuceClusterConnection doCreateLettuceClusterConnection(
425426
@Override
426427
public LettuceReactiveRedisConnection getReactiveConnection() {
427428

429+
if (isClusterAware()) {
430+
return getReactiveClusterConnection();
431+
}
432+
428433
return getShareNativeConnection()
429434
? new LettuceReactiveRedisConnection(getSharedReactiveConnection(), reactiveConnectionProvider)
430435
: new LettuceReactiveRedisConnection(reactiveConnectionProvider);

src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionFactoryUnitTests.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
* @author Balázs Németh
6767
* @author Ruben Cervilla
6868
* @author Luis De Bello
69+
* @author Andrea Como
6970
*/
7071
public class LettuceConnectionFactoryUnitTests {
7172

@@ -939,6 +940,27 @@ public void maxRedirectsShouldBeSetOnClusterClientOptions() {
939940
assertThat(options.getTimeoutOptions().isApplyConnectionTimeout()).isFalse();
940941
}
941942

943+
@Test // DATAREDIS-1142
944+
public void shouldFallbackToReactiveRedisClusterConnectionWhenGetReactiveConnectionWithClusterConfig() {
945+
946+
LettuceConnectionProvider connectionProviderMock = mock(LettuceConnectionProvider.class);
947+
StatefulConnection<?, ?> statefulConnection = mock(StatefulConnection.class);
948+
when(connectionProviderMock.getConnection(any())).thenReturn(statefulConnection);
949+
LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory(clusterConfig) {
950+
951+
@Override
952+
protected LettuceConnectionProvider doCreateConnectionProvider(AbstractRedisClient client,
953+
RedisCodec<?, ?> codec) {
954+
return connectionProviderMock;
955+
}
956+
};
957+
connectionFactory.afterPropertiesSet();
958+
959+
LettuceReactiveRedisConnection reactiveConnection = connectionFactory.getReactiveConnection();
960+
961+
assertThat(reactiveConnection).isInstanceOf(LettuceReactiveRedisClusterConnection.class);
962+
}
963+
942964
@Data
943965
@AllArgsConstructor
944966
static class CustomRedisConfiguration implements RedisConfiguration, WithHostAndPort {

0 commit comments

Comments
 (0)