DATAREDIS-950 - Fix ClassCastException on shared Lettuce Cluster connection validation.
Original Pull Request: #445
This commit is contained in:
committed by
Christoph Strobl
parent
983bb8b868
commit
d874aeb84f
@@ -1129,7 +1129,7 @@ public class LettuceConnectionFactory
|
||||
}
|
||||
|
||||
if (connection instanceof StatefulRedisClusterConnection) {
|
||||
((StatefulRedisConnection) connection).sync().ping();
|
||||
((StatefulRedisClusterConnection) connection).sync().ping();
|
||||
}
|
||||
valid = true;
|
||||
} catch (Exception e) {
|
||||
|
||||
@@ -26,11 +26,10 @@ import io.lettuce.core.AbstractRedisClient;
|
||||
import io.lettuce.core.ClientOptions;
|
||||
import io.lettuce.core.RedisClient;
|
||||
import io.lettuce.core.RedisURI;
|
||||
import io.lettuce.core.api.StatefulConnection;
|
||||
import io.lettuce.core.api.StatefulRedisConnection;
|
||||
import io.lettuce.core.cluster.ClusterClientOptions;
|
||||
import io.lettuce.core.cluster.RedisClusterClient;
|
||||
import io.lettuce.core.cluster.api.StatefulRedisClusterConnection;
|
||||
import io.lettuce.core.cluster.api.sync.RedisAdvancedClusterCommands;
|
||||
import io.lettuce.core.codec.ByteArrayCodec;
|
||||
import io.lettuce.core.codec.RedisCodec;
|
||||
import io.lettuce.core.resource.ClientResources;
|
||||
@@ -640,8 +639,7 @@ public class LettuceConnectionFactoryUnitTests {
|
||||
|
||||
RedisClusterClient clientMock = mock(RedisClusterClient.class);
|
||||
StatefulRedisClusterConnection<byte[], byte[]> connectionMock = mock(StatefulRedisClusterConnection.class);
|
||||
when(clientMock.connect(ByteArrayCodec.INSTANCE))
|
||||
.thenReturn(connectionMock);
|
||||
when(clientMock.connect(ByteArrayCodec.INSTANCE)).thenReturn(connectionMock);
|
||||
|
||||
LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory(clusterConfig,
|
||||
LettuceClientConfiguration.defaultConfiguration()) {
|
||||
@@ -662,6 +660,33 @@ public class LettuceConnectionFactoryUnitTests {
|
||||
verify(clientMock).connect(ArgumentMatchers.any(RedisCodec.class));
|
||||
}
|
||||
|
||||
@Test // DATAREDIS-950
|
||||
public void shouldValidateSharedClusterConnection() {
|
||||
|
||||
RedisClusterClient clientMock = mock(RedisClusterClient.class);
|
||||
StatefulRedisClusterConnection<byte[], byte[]> connectionMock = mock(StatefulRedisClusterConnection.class);
|
||||
RedisAdvancedClusterCommands<byte[], byte[]> syncMock = mock(RedisAdvancedClusterCommands.class);
|
||||
when(clientMock.connect(ByteArrayCodec.INSTANCE)).thenReturn(connectionMock);
|
||||
when(connectionMock.isOpen()).thenReturn(true);
|
||||
when(connectionMock.sync()).thenReturn(syncMock);
|
||||
|
||||
LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory(clusterConfig,
|
||||
LettuceClientConfiguration.defaultConfiguration()) {
|
||||
|
||||
@Override
|
||||
protected AbstractRedisClient createClient() {
|
||||
return clientMock;
|
||||
}
|
||||
};
|
||||
|
||||
connectionFactory.setValidateConnection(true);
|
||||
connectionFactory.afterPropertiesSet();
|
||||
|
||||
connectionFactory.getConnection().close();
|
||||
|
||||
verify(syncMock).ping();
|
||||
}
|
||||
|
||||
@Test // DATAREDIS-842
|
||||
public void databaseShouldBeSetCorrectlyOnSentinelClient() {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user