Skip to content

Commit 2d04af6

Browse files
andreacomochristophstrobl
authored andcommitted
DATAREDIS-1142 - Use Lettuce reactive cluster connection if configured.
Original Pull Request: #529
1 parent 3c945aa commit 2d04af6

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 {
@@ -432,6 +433,10 @@ protected LettuceClusterConnection doCreateLettuceClusterConnection(
432433
@Override
433434
public LettuceReactiveRedisConnection getReactiveConnection() {
434435

436+
if (isClusterAware()) {
437+
return getReactiveClusterConnection();
438+
}
439+
435440
return getShareNativeConnection()
436441
? new LettuceReactiveRedisConnection(getSharedReactiveConnection(), reactiveConnectionProvider)
437442
: 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
@@ -67,6 +67,7 @@
6767
* @author Balázs Németh
6868
* @author Ruben Cervilla
6969
* @author Luis De Bello
70+
* @author Andrea Como
7071
*/
7172
public class LettuceConnectionFactoryUnitTests {
7273

@@ -942,6 +943,27 @@ public void maxRedirectsShouldBeSetOnClusterClientOptions() {
942943
assertThat(options.getTimeoutOptions().isApplyConnectionTimeout()).isFalse();
943944
}
944945

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

0 commit comments

Comments
 (0)