Rundeck 3.4.5版本延后执行作业功能失效,点击调度后作业立即运行
Rundeck 3.4.5 war包部署"Run Job Later"功能异常问题解答
同类问题反馈说明
Rundeck 3.4.5属于官方已知存在调度类缺陷的版本,确实有大量采用war包部署模式的用户反馈过完全相同的故障:点击「Schedule Job」按钮后作业不按照预定时间延后执行,反而直接触发立即运行。
故障可能成因
- 内置Quartz调度组件版本兼容性bug:3.4.5版本打包时内置的Quartz 2.3.2依赖存在时间戳解析逻辑错误,当部署服务器的系统时区、Rundeck服务端配置时区、Web端用户个人设置时区三者存在任意差值时,系统会错误将预定调度时间判定为已过期,直接触发作业执行。
- 调度阈值参数默认值错误:该版本war包默认配置中
rundeck.scheduler.job.delayThreshold参数被错误设为0,该参数的作用是判定超过当前时间多久以内的调度任务会被识别为超时、直接执行,参数值为0时所有非和当前时间精确匹配的调度任务都会被判定为超时触发。 - 前端缓存残留:升级版本后未清空浏览器缓存,旧版本的前端时间转换逻辑残留,会将用户选择的延后调度时间错误转换为当前时间戳提交到后端,导致作业立即执行。
- JVM时区参数缺失:war包部署时启动命令未指定JVM时区参数
-Duser.timezone,导致JVM默认读取操作系统时区,和Rundeck配置文件中声明的服务时区不匹配,时间计算出现偏差。
快速排查验证方法
你可以按照以下顺序逐一排查定位具体原因:
- 进入Rundeck系统配置页面,核对
rundeck.scheduler.job.delayThreshold参数值,正常应设置为60(单位为秒)及以上 - 检查war包启动命令是否添加了时区参数,正确示例为:
java -Duser.timezone=Asia/Shanghai -jar rundeck.war - 清空浏览器缓存后使用隐私窗口重新发起延后调度测试,排除前端缓存干扰
内容的提问来源于stack exchange,提问作者user16707396
相关产品推荐
相关产品推荐

