sunwuxiang

Results 14 comments of sunwuxiang

我发现,当redisclient的close为true的连接还在连接池被拿出来使用并放回去,但是当这个连接的channel因为网络抖动close的时候,这个连接无法恢复,因为在ConnectionWatchdog的tryReconnect中判断当redisclient的close为true,跳出重连,但是这个连接还在连接池被使用 是否可以在放回连接的时候判断当redisclient的close为true的时候,不放回连接,并且关闭连接,代码如: 我发现在这个连接在最开始被创建的时候redisclient的close就是true,应该在启动的时候就有bug,但是我没找到

提供这个连接创建时的日志供参考:

不行,这个方案不行,他还是会重复初始化连接,还得从创建连接得时候找到问题原因

@mrniko 能否安排优先修复,故障影响很大

试过了,最新版也有问题,启动的时候随机出现,启动初始化并发处理没做好。

https://github.com/redisson/redisson/assets/30144714/46f40527-4bac-4f79-a0f5-e6acc83136be 使用最新的3.29.0版本复现了,网络恢复后无法自动恢复,请看附件视频 操作步骤:启动,断开网络,过一会重连,如果自动恢复,再重新启动,断网重连,如果重复启动、断网、重连,基本三四次就可复现 org.redisson redisson 3.29.0 `System.out.printf("133"); SpringApplication.run(RedissonTest.class, args); System.out.printf("33"); Config config = new Config(); ClusterServersConfig clusterConfig = config.useClusterServers().setScanInterval(2000) .setKeepAlive(true).setMasterConnectionPoolSize(8).setMasterConnectionMinimumIdleSize(1) .setSlaveConnectionPoolSize(8).setSlaveConnectionMinimumIdleSize(1).setReadMode(ReadMode.valueOf("MASTER")); clusterConfig.setPingConnectionInterval(3000); clusterConfig.addNodeAddress("redis://common_microservice_redis-01_test.cowelltech.com:6379"); config.setCodec(new JsonJacksonCodec()); System.out.printf("22"); RedissonClient redisson = Redisson.create(config);...

restart the java application 3-4 time,not redis cluster

restart the java application 3-4 time,not redis cluster

操作的一直是client端的应用启动,端的也是client端的wifi网络,然后重连wifi,redis server一直不动 目前的redisson在启动的时候有一定概率使得连接的redisclient的shutdown等于true(应该和客户端的一堆散列node的并发逻辑没处理好有关系),在网络抖动是,这些edisclient的shutdown等于true的连接就不会被watchdog重试