Sentinel采用SphO方式定义资源,报错:The order of entry exit can‘t be paired with the order of entry
Sentinel
alibaba/Sentinel: Sentinel 是阿里巴巴开源的一款面向分布式服务架构的流量控制、熔断降级组件,提供实时监控、限流、降级和系统保护功能,适用于微服务治理场景。
项目地址:https://gitcode.com/gh_mirrors/sentine/Sentinel
免费下载资源
·
(1)问题描述
在搭建sentinel工程的时候,采用SphO方式手动定义资源,启动工程后,访问资源,发现报错,报错内容大致如下:
o.s.web.servlet.HandlerExecutionChain :
HandlerInterceptor.afterCompletion threw exceptioncom.alibaba.csp.sentinel.ErrorEntryFreeException: The order of entry exit can't be paired with the order of entry,
current entry in context: <testSphO>, but expected: </api/sentinel/testSphO>
o.s.web.servlet.HandlerExecutionChain :
HandlerInterceptor.afterCompletion threw exception
com.alibaba.csp.sentinel.ErrorEntryFreeException: The order of entry exit can't be paired with the order of entry,
current entry in context: <testSphO>, but expected: </api/sentinel/testSphO>
(2)解决方案
报错原因:
使用SphO方式定义资源时候,通过entry()方法开启,但是没有调用exit()结束,所以导致上面的报错。
解决办法:
调用【SphO.exit()】关闭资源。
具体案例代码如下:
@GetMapping("/testSphO")
public String testSphO() {
boolean testSphO = SphO.entry("testSphO");
if (testSphO) {
try {
// TODO 这里执行具体业务逻辑
System.out.println("这里执行具体业务逻辑");
return "sentinel call testSphU() method.";
} finally {
SphO.exit(); // 关闭
}
} else {
// TODO 这里执行限流的逻辑
System.out.println("这里执行限流的逻辑");
return "testSphU 被限流啦。";
}
}
以上就是我遇到的SphO错误以及解决方案。
GitHub 加速计划 / sentine / Sentinel
22.24 K
7.98 K
下载
alibaba/Sentinel: Sentinel 是阿里巴巴开源的一款面向分布式服务架构的流量控制、熔断降级组件,提供实时监控、限流、降级和系统保护功能,适用于微服务治理场景。
最近提交(Master分支:3 个月前 )
195150bc
* fix issue 2485 which occur oom when using async servlet request.
* optimize imports
* 1. fix the same issue in the webmvc-v6x
2. improve based on review comments 2 个月前
b78b09d3
2 个月前
更多推荐
已为社区贡献3条内容
所有评论(0)