Skip to content

[BUG] 系统自适应限流 调用 SystemBlockException 构造方法 并抛出时 未初始化父类 BlockException 的成员变量 AbstractRule 导致捕获异常使用 EagleEyeLogUtil.log 记录日志时触发 空指针异常 #3255

Open

Description

@intjfyl

Issue Description

Type: bug report

Describe what happened

系统自适应限流 调用 SystemBlockException 构造方法 并抛出时 未初始化父类 BlockException 的成员变量 AbstractRule 导致捕获异常使用 EagleEyeLogUtil.log 记录日志时触发 空指针异常。
上述空指针异常 “掩盖” 了 抛出的 SystemBlockException,导致即使触发系统自适应保护,请求仍会发送到后台的接口。

Describe what you expected to happen

触发系统自适应保护后,正常抛出并记录异常,后台接口接收不到请求。

How to reproduce it (as minimally and precisely as possible)

  1. 使用 1.8.6 版本的 sentinel 依赖
  2. 配置系统自适应保护规则
  3. 触发配置的规则,使代码抛出 SystemBlockException 异常
  4. 在 com.alibaba.csp.sentinel.slots.system.SystemRuleManager#checkSystem 处打断点,逐步调试观察异常抛出和处理逻辑
  5. com.alibaba.csp.sentinel.slots.logger.LogSlot#entry 处 观测到空指针异常产生

image

Tell us your environment

  • Windows开发环境
  • 1.8.6 版本的 sentinel

Activity

  1. msly commented on Dec 5, 2023

    @msly

    #2853 引入的bug @sczyh30

  2. xixihaha520389 commented on Dec 28, 2023

    @xixihaha520389

    哈哈,刚刚也发现了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions