xxl-job 任务并发执行时,有一个会失败

3phpmpom  于 5个月前  发布在  其他
关注(0)|答案(5)|浏览(259)

一个任务并发调度到执行器执行时,大概率有一个会回调失败,[job running, killed],初步分析是这个代码导致
JobThread oldJobThread = jobThreadRepository.put(jobId, newJobThread); // putIfAbsent | oh my god, map's put method return the old value!!! if (oldJobThread != null) { oldJobThread.toStop(removeOldReason); oldJobThread.interrupt(); }
有一个会stop掉导致,有没有遇到过的请教下

gajydyqb

gajydyqb1#

把这块oldJobThread的判断执行逻辑去掉,先不要stop掉,让空闲超时30s自行停止,这样应该没什么问题。按理说应该要让之前的任务执行完,而不是强行停止,不知道这样理解可行?

htrmnn0y

htrmnn0y2#

请问你这个并发场景是怎么造成的?

e5nqia27

e5nqia273#

请问你这个并发场景是怎么造成的?

有二次开发过,比如接口开发调用,可以模拟出来,正常情况下应该是概率极低的

zmeyuzjn

zmeyuzjn4#

@wu-xin@wangchao550586585@xuxueli 请问 @wu-xin 提的这个现象是执行器没有考虑到同一任务并发问题吗? 我们也遇到过。

ntjbwcob

ntjbwcob5#

我们也有遇到,而且没有进行二次开发,只是在执行分片广播后的子任务因为重复了而被interrupt,这应该是个bug吧,不修吗?

相关问题