Sentinel采用SphO方式定义资源,报错:The order of entry exit can‘t be paired with the order of entry
资源 报错 方式 The of with 定义 be
2023-09-14 09:13:55 时间
(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错误以及解决方案。
相关文章
- thinkjs框架发布上线PM2管理,静态资源访问配置
- 图像处理资源
- k8s安装kubesphere的环境准备:资源规划、默认存储类StorageClass(nfs-client-provisioner)
- hadoop yarn的三种资源调度器详解
- 怎样在vs2010中添加图片资源呢?
- extjs中js资源缓存策略
- SpringBoot - resource资源文件的打包配置详解(指定资源文件位置)
- JavaScript资源大全中文版(Awesome最新版)
- 系统调用——本质:多个进程都需要访问系统资源,为了更好的管理这些资源,进程是不允许直接操作的,因此有了系统调用,你看为什么打开文件open函数是系统调用,因为他要管理文件描述符(总数有限制)啊
- Spring MVC资源绑定视图解析器
- 人工智能前沿——「小海带」超全视觉注意力机制资源分享(附下载链接)
- Kubernetes API Server 准入控制插件 / 资源限制 ResourceQuota