设为首页 加入收藏

TOP

记一次 Redisson 线上问题 → ERR unknown command 'WAIT' 的排查与分析(一)
2023-09-23 15:44:43 】 浏览:311
Tags:Redisson ERR unknown command ' WAIT' 查与分

开心一刻

  昨晚和一个朋友聊天

  我:处对象吗,咱俩试试?

  朋友:我有对象

  我:我不信,有对象不公开?

  朋友:不好公开,我当的小三

问题背景

  程序在生产环境稳定的跑着

  直到有一天,公司执行组件漏洞扫描,有漏洞的 jar 要进行升级修复

  然后我就按着扫描报告将有漏洞的 jar 修复到指定的版本

  自己在开发环境也做了主流业务的测试,没有任何异常,稳如老狗

  提测之后,测试小姐姐也没测出问题,一切都是这么美好

  结果升级到生产后,生产日志疯狂报错: org.redisson.client.RedisException: ERR unknown command 'WAIT' 

  完整的异常堆栈信息类似如下

org.redisson.client.RedisException: ERR unknown command 'WAIT'. channel: [id: 0x84149c6e, L:/192.168.2.40:3592 - R:/47.98.21.100:6379] command: (WAIT), params: [1, 1000]

    at org.redisson.client.handler.CommandDecoder.decode(CommandDecoder.java:346)
    at org.redisson.client.handler.CommandDecoder.decodeCommandBatch(CommandDecoder.java:247)
    at org.redisson.client.handler.CommandDecoder.decodeCommand(CommandDecoder.java:189)
    at org.redisson.client.handler.CommandDecoder.decode(CommandDecoder.java:117)
    at org.redisson.client.handler.CommandDecoder.decode(CommandDecoder.java:102)
    at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:508)
    at io.netty.handler.codec.ReplayingDecoder.callDecode(ReplayingDecoder.java:366)
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:719)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:655)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:581)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493)
    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
    at java.lang.Thread.run(Thread.java:748)
View Code

  突然来个这个鬼玩意,脑阔有点疼

  先让运维同事回滚,然后就开始了我的问题排查之旅

问题排查与处理

  项目搭建

  示例代码:redisson-spring-boot-demo,执行如下 test 方法即可进行测试

  项目很简单,通过 redisson-spring-boot-starter 引入 redisson 

  扯点题外的东西,关于 redisson-spring-boot-starter 的配置方式

  配置方式有很多种,官网文档做了说明,有 4 种配置方式:README.md

  方式 1:

  方式 2:

  方式 3:

  方式 4:

  如果 4 种方式都配置,最终生效的是哪一种?

  楼主我此刻只想给你个大嘴巴子,怎么这么多问题?

  既然你们都提出来了,那我就不能不管,谁让我太爱你们了,盘它!

  从哪盘,怎么盘?

  源码

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇LeetCode155:最小栈,最简单的中.. 下一篇Spring Cloud Gateway:新一代微..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目