记录发现redissonBug并提交修复的历程
背景redis cluster集群模式下3主3从,用redisson,scan命令会漏扫非cluster集群下没有问题,lettuce也没有问题,只有redisson+cluster+scan才有会有问题
发现的历程搞库存重构,存放在redis的库存数据要更改名称,肯定不能用keys命令,keys会阻塞,时间复杂度是O(n)所以用scan,但发现scan总是漏扫数据,用Lettuce就没有问题,所以断定是redisson源码出现问题
找问题的历程分析源码,从scan开始,源码如下
建议debug阅读源码,不然容易混乱本地没有环境建议远程debug,在jvm启动脚本加上-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=16770 用idea连接即可远程debug
分析源码scan原理调用scan会返回一个迭代器,通过迭代器scan会从头扫到尾,直至cursorId=0源码如下
12345678910111213141516171819202122232425262728293031323334353 ...