Redis health check failed ConcurrentModificationException: null
FrankCy opened this issue · comments
Bug Report
[http-nio-11943-exec-2] [] Redis health check failed
java.util.ConcurrentModificationException: null
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909) ~[?:1.8.0_221]
at java.util.ArrayList$Itr.next(ArrayList.java:859) ~[?:1.8.0_221]
at org.springframework.data.redis.connection.lettuce.LettuceConverters$1.convert(LettuceConverters.java:226) ~[spring-data-redis-2.1.5.RELEASE.jar!/:2.1.5.RELEASE]
at org.springframework.data.redis.connection.lettuce.LettuceConverters$1.convert(LettuceConverters.java:217) ~[spring-data-redis-2.1.5.RELEASE.jar!/:2.1.5.RELEASE]
at org.springframework.data.redis.connection.lettuce.LettuceConverters.partitionsToClusterNodes(LettuceConverters.java:716) ~[spring-data-redis-2.1.5.RELEASE.jar!/:2.1.5.RELEASE]
at org.springframework.data.redis.connection.lettuce.LettuceClusterTopologyProvider.getTopology(LettuceClusterTopologyProvider.java:53) ~[spring-data-redis-2.1.5.RELEASE.jar!/:2.1.5.RELEASE]
at org.springframework.data.redis.connection.ClusterCommandExecutor.getClusterTopology(ClusterCommandExecutor.java:332) ~[spring-data-redis-2.1.5.RELEASE.jar!/:2.1.5.RELEASE]
at org.springframework.data.redis.connection.ClusterCommandExecutor.executeCommandOnArbitraryNode(ClusterCommandExecutor.java:110) ~[spring-data-redis-2.1.5.RELEASE.jar!/:2.1.5.RELEASE]
at org.springframework.data.redis.connection.lettuce.LettuceClusterConnection.clusterGetClusterInfo(LettuceClusterConnection.java:351) ~[spring-data-redis-2.1.5.RELEASE.jar!/:2.1.5.RELEASE]
at org.springframework.boot.actuate.redis.RedisHealthIndicator.doHealthCheck(RedisHealthIndicator.java:58) ~[spring-boot-actuator-2.1.6.RELEASE.jar!/:2.1.6.RELEASE]
Current Behavior
Configured LettuceClientConfiguration and set topology refresh, but in high concurrency scenarios, occasionally prompts this error, would like to help analyse the cause, thanks.
Stack trace
Input Code
Input Code
public LettuceClientConfiguration clientConfiguration(ClientResources clientResources,GenericObjectPoolConfig genericObjectPoolConfig) {
ClusterTopologyRefreshOptions topologyRefreshOptions= ClusterTopologyRefreshOptions.builder()
.enablePeriodicRefresh(Duration.ofSeconds(period))
.enableAllAdaptiveRefreshTriggers().build();
ClusterClientOptions clusterClientOptions = ClusterClientOptions.builder()
.timeoutOptions(TimeoutOptions.enabled(Duration.ofSeconds(period)))
.topologyRefreshOptions(topologyRefreshOptions)
.build();
LettuceClientConfiguration lettuceClientConfiguration = LettucePoolingClientConfiguration.builder()
.commandTimeout(Duration.ofSeconds(timeout))
.clientResources(clientResources)
.clientOptions(clusterClientOptions)
.poolConfig(genericObjectPoolConfig)
.build();
return lettuceClientConfiguration;
}
Expected behavior/code
Environment
- lettuce-core:5.1.7.RELEASE
- spring-data-redis:2.1.9.RELEASE
- spring-boot-starter-data-redis:2.1.6.RELEASE
- jdk8
Hey @FrankCy,
from the stacktrace I can only assume you are having issue with the Spring Data Redis and not the Lettuce drive itself? Perhaps this issue would be better suited there?