458 Star 2.9K Fork 1.1K

GVP京东零售 / asyncTool

 / 详情

实现ITimeoutWorker针对单个worker设置超时时间不生效

Backlog
Task
Opened this issue  
2020-08-18 17:59

通过实现ITimeoutWorker接口创建worker(worker执行代码为Thread.sleep(1000)),并设置enableTimeOut方法返回true,设置timeOut方法返回800毫秒,当执行worker的时候,依然可以正常执行成功,并没有因超时而执行失败

Attachments

Comments (4)

Genius created任务
展开全部操作日志

最早期版本是有单独的worker超时控制的,但是有问题,就是每一个监控,都需要额外开辟一个线程来监控他的超时。这样会导致线程数爆炸。后来专门删掉了,保留了组超时

最早期版本是有单独的worker超时控制的,但是有问题,就是每一个监控,都需要额外开辟一个线程来监控他的超时。这样会导致线程数爆炸。后来专门删掉了,保留了组超时

@tianyaleixiaowu 虽然组超时可以满足大部分的需求,并且针对单个worker设置超时会有线程爆炸的情况,但比如对一些关键接口或者外部接口的数据调用,如果超时则发送email报警,是有业务价值的;建议保留针对单个线程设置超时的功能,在文档中说明情况,由使用者进行判定如何使用。

这个目前有点困难,改动量会比较大。如果不是特别复杂的,如超过5个以上的编排任务,建议直接使用compleableFuture的超时来完成。而超过10个以上,用asyncTool时,再监控单个超时肯定出现线程暴增的情况。

dev分支的v1.5.1-SNAPSHOP版本加入了单wrapper时间监控的功能(原理是单线程时间轮对所有注册的wrapper进行检查),可以试试看(暂未大规模测试过,可能会有潜在bug)

Sign in to comment

状态
Assignees
Projects
Milestones
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
Branches
Planed to start   -   Planed to end
-
Top level
Priority
Duration (hours)
确定
参与者(3)
303698 tianyalei 1578919857 5696078 tcsn site 1594960141
Java
1
https://gitee.com/jd-platform-opensource/asyncTool.git
git@gitee.com:jd-platform-opensource/asyncTool.git
jd-platform-opensource
asyncTool
asyncTool

Search