alibaba / alibaba/Sentinel

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

Open
#3,255 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
23.1k
Forks
8.1k
PR merge metrics
No merged PRs in 30d

Description

## 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](https://github.com/alibaba/Sentinel/assets/135462103/99e1cfc7-59e2-4fc3-8279-185f7b60d2a3)

### Tell us your environment
- Windows开发环境
- 1.8.6 版本的 sentinel

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.