记录springboot-redisson依赖升级过程

662 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第8天,点击查看活动详情

起因及背景

公司封装了spring-boot中常用的扩展包及启动配置,某天领导说需要协助测试下redisson3.9.1断线重连的bug,并切换依赖至3.11.3。

Bug重现

本机装好windows版redis并切换工程链接后,启动工程并间歇性关闭redis发现只有在极其偶然的情况才会出现问题,无法总结规律。

在百度查了下redisson断线重连,第一个网站就是,打开详细阅读了下,作者尝试了各种方式,并找到了解决方案。但是复现步骤比较模糊依赖网络环境,所以还是自己试试吧。

通过在github的issues列表中找到1811号问题发现有人反馈在重连成功,发送初始化命令失败时会复现该问题。

操作步骤

  1. org.redisson.client.handler.BaseConnectionHandler#channelActive 102行 增加断点(此处为重连执行初始化命令)
  2. 系统启动(启动时连不上redis会启动失败,所以需要启动成功后重启redis)
  3. 重启redis,待进入断点后再关闭redis,放行断点。(重复此步骤2-3次)
  4. 再次启动redis,部分链接无法重连,重复步骤3越多无法重连的链接越多

项目升级

由于公司封装了常用的扩展包,所以需要先排除公司项目中该依赖包,再加入新的依赖包

        <dependency>
            <groupId>xxxxx</groupId>
            <artifactId>xxx-redisson</artifactId>
            <exclusions>
                <exclusion>
                    <artifactId>redisson-spring-boot-starter</artifactId>
                    <groupId>org.redisson</groupId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <artifactId>redisson-spring-boot-starter</artifactId>
            <groupId>org.redisson</groupId>
            <version>3.9.1</version>
            <exclusions>
                <exclusion>
                    <groupId>org.redisson</groupId>
                    <artifactId>redisson</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.redisson</groupId>
            <artifactId>redisson</artifactId>
            <version>3.11.3</version>
        </dependency>
  • redisson-spring-boot-starter:为redisson适配spring-boot的启动项配置,与spring-boot版本有对应关系,所以升级需要考虑springboot版本问题
  • redisson-spring-boot-starter对应的redisson版本也是固定的,所以想单独升级redisson版本只有先排除原有依赖,再在项目中指定新的redisson版本。

更新依赖版本后启动日志中redisson依赖已切换至3.11.3,且再尝试使用复现步骤操作后也能正常断线重连。

参考资料

github.com/redisson/re…

blog.csdn.net/weixin_4383…

github.com/redisson/re…