xuxueli / xxl-job

A distributed task scheduling framework.(分布式任务调度平台XXL-JOB)
http://www.xuxueli.com/xxl-job/
GNU General Public License v3.0
27.4k stars 10.84k forks source link

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

Open sg6303 opened 1 year ago

sg6303 commented 1 year ago

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

image

sg6303 commented 1 year ago

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

cryboy007 commented 1 year ago

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

qwn3213 commented 9 months ago

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

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

LiJun990105 commented 4 months ago

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

zhanghanwei2008 commented 3 months ago

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