xxl-job在spring boot 服务停止做优雅停服的时候,会报下面这个错误,该如何处理

uqjltbpv  于 5个月前  发布在  Spring
关注(0)|答案(5)|浏览(115)

Please answer some questions before submitting your issue. Thanks!

Which version of XXL-JOB do you using?

2.0.1

Expected behavior

xxl-job应该能正常停止调度,而且该即将要下线的pod内的服务xxl-job不应该报错

Actual behavior

停止的时候,会报错

Steps to reproduce the behavior

直接在k8s进行服务pod停止或重启动作的时候,要下线的pod,就会报这个错误

Other information

chy5wohz

chy5wohz1#

还有一个问题是:
spring cloud 在停止服务的时候,如果 xxl-job 还有正在运行的 定时任务,要该如何处理??

bvhaajcl

bvhaajcl2#

如果我没记错的话2.01是直接杀死正在执行的定时任务,如果想等待执行完毕,需要改下源码

4xrmg8kj

4xrmg8kj3#

直接优雅关闭执行器会自动下线并且等待运行中的任务执行完毕,但是少了callback操作(就是你报错的那个,可以对比下正常任务和这个任务的日志)导致任务记录未能更新,一直显示执行中,等待一段时间后由于判断到执行器不存在(k8s ip变化),会把任务登记为失败

我们的处理方式:自己改xxl-job源码和配置k8s的preStop,实现上线新执行器、下线旧执行器(关闭ExecutorRegistryThread和刷新xxl_job_group),循环等待旧执行器所有任务完成(查xxl_job_log)再优雅关闭

rfbsl7qr

rfbsl7qr4#

@qwn3213 可以请教下是如何更改的

6ie5vjzr

6ie5vjzr5#

我们也遇到了相同的问题,@qwn3213@xuxueli 现在是怎么解决 spring-cloud 的注册中心consul中实例已经注销,但是在xxl-job的执行器还仍然继续执行,会出现报错情况。

相关问题