DATAREDIS-1189 - Consistently translate Lettuce connection exceptions.
We now translate consistently connection/pooling exceptions in LettuceConnectionFactory by wrapping LettuceConnectionProvider with a variant that considers exception translation.
This commit is contained in:
@@ -473,7 +473,8 @@ public class LettuceConnectionFactoryTests {
|
||||
RedisConnection connection = factory.getConnection();
|
||||
|
||||
assertThatThrownBy(() -> connection.pSubscribe((message, pattern) -> {
|
||||
}, "foo".getBytes())).isInstanceOf(RedisSystemException.class).hasCauseInstanceOf(UnsupportedOperationException.class);
|
||||
}, "foo".getBytes())).isInstanceOf(RedisConnectionFailureException.class)
|
||||
.hasCauseInstanceOf(UnsupportedOperationException.class);
|
||||
|
||||
connection.close();
|
||||
factory.destroy();
|
||||
|
||||
@@ -49,6 +49,8 @@ import org.mockito.ArgumentMatchers;
|
||||
import org.springframework.beans.DirectFieldAccessor;
|
||||
import org.springframework.beans.factory.DisposableBean;
|
||||
import org.springframework.data.redis.ConnectionFactoryTracker;
|
||||
import org.springframework.data.redis.RedisConnectionFailureException;
|
||||
import org.springframework.data.redis.connection.PoolException;
|
||||
import org.springframework.data.redis.connection.RedisClusterConfiguration;
|
||||
import org.springframework.data.redis.connection.RedisClusterConnection;
|
||||
import org.springframework.data.redis.connection.RedisConfiguration;
|
||||
@@ -861,6 +863,27 @@ public class LettuceConnectionFactoryUnitTests {
|
||||
verify(connectionProviderMock, times(2)).getConnection(StatefulConnection.class);
|
||||
}
|
||||
|
||||
@Test // DATAREDIS-1189
|
||||
public void shouldTranslateConnectionException() {
|
||||
|
||||
LettuceConnectionProvider connectionProviderMock = mock(LettuceConnectionProvider.class);
|
||||
|
||||
when(connectionProviderMock.getConnection(any())).thenThrow(new PoolException("error!"));
|
||||
|
||||
LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory() {
|
||||
@Override
|
||||
protected LettuceConnectionProvider doCreateConnectionProvider(AbstractRedisClient client,
|
||||
RedisCodec<?, ?> codec) {
|
||||
return connectionProviderMock;
|
||||
}
|
||||
};
|
||||
connectionFactory.setClientResources(LettuceTestClientResources.getSharedClientResources());
|
||||
connectionFactory.afterPropertiesSet();
|
||||
|
||||
assertThatExceptionOfType(RedisConnectionFailureException.class)
|
||||
.isThrownBy(() -> connectionFactory.getConnection().ping()).withCauseInstanceOf(PoolException.class);
|
||||
}
|
||||
|
||||
@Test // DATAREDIS-1027
|
||||
public void shouldDisposeConnectionProviders() throws Exception {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user