Sentinel 1.8.3 异常数统计不正确

roy500 issue comment alibaba/Sentinel
srntinel-spring-webmvc-adapter使用HandlerInterceptor做异常统计等处理,但在实际开发中都会用@ControllerAdvice全局异常处理如下:
因为拦截顺序会按照controller -> aspect -> controllerAdvice -> interceptor -> filter往下走,这导致异常已在ControllerAdvice被捕获处理,HandlerInterceptor无法统计异常
Fixes #2461
在AbstractSentinelInterceptor下添加与afterCompletion处理相同的方法exceptionControllerAdviceExit,提供给全局异常捕获类调用如下:
这样就可以捕获系统异常,自定义的业务异常也是同样调用,这里也不用担心会统计两次afterCompletion下的increaseReferece做了判断
只要定义异常捕获处理都无法对异常进行统计,业务异常也是如此
@sczyh30 @brotherlu-xcq It's been placing for a long time
提供spring的全局异常处理器,会导致熔断规则(异常数规则)失效解决方案
Describe what this PR does / why we need it
srntinel-spring-webmvc-adapter使用HandlerInterceptor做异常统计等处理,但在实际开发中都会用@ControllerAdvice全局异常处理如下:
因为拦截顺序会按照controller -> aspect -> controllerAdvice -> interceptor -> filter往下走,这导致异常已在ControllerAdvice被捕获处理,HandlerInterceptor无法统计异常
Does this pull request fix one issue?
Fixes #2461
Describe how you did it
在AbstractSentinelInterceptor下添加与afterCompletion处理相同的方法exceptionControllerAdviceExit,提供给全局异常捕获类调用如下:
这样就可以捕获系统异常,自定义的业务异常也是同样调用,这里也不用担心会统计两次afterCompletion下的increaseReferece做了判断
Describe how to verify it
只要定义异常捕获处理都无法对异常进行统计,业务异常也是如此
Special notes for reviews