You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins仅单个Job的Git Poll SCM轮询失效问题排查

问题根因

这类单Job Git SCM轮询停摆、其余Job正常、手动构建无异常且无报错日志的情况,核心原因都是轮询调度链路出现了无报错的静默阻塞,常见触发场景如下:

  • 该Job的轮询线程在上次执行(即日志记录的2022年6月9日19:31:00那次轮询)时僵死:比如遇到Git仓库目录锁未释放、网络半连接无超时、工作区文件句柄泄漏,线程会一直卡在等待状态且不抛出异常,占死该Job唯一的轮询任务槽位,后续所有轮询调度信号都会被直接丢弃,不会产生新的日志。由于手动构建走独立的构建线程池,不受轮询线程僵死影响,所以可以正常拉取代码完成构建。
  • Job轮询触发器的内存注册信息失效:如果在问题出现前做过Git插件、调度相关插件的热重载,或者通过REST API、脚本批量修改过Job配置,可能出现磁盘上存储的cron配置仍然是* * * * *,但内存里的调度器已经把该Job的轮询任务标记为失效,扫描轮询任务时直接跳过,全程不会输出错误日志。
  • 存在僵死的构建记录:如果该Job有历史构建状态异常卡在“进行中”,Git轮询逻辑默认会跳过正在构建的Job避免重复触发,这个判断逻辑不会输出任何提示日志,也会导致轮询看起来完全停摆。
修复方案

按操作成本从低到高依次执行,每做完一步等待1分钟观察Git Polling日志是否有新记录,恢复即可停止后续操作:

  • 清理僵死构建
    进入该Job的构建历史列表,查找是否存在状态一直显示“进行中”但实际早就停止输出日志的构建项,点进对应构建页点击「强制终止构建」即可。
  • 重新注册轮询触发器
    进入该Job的配置页面,不需要修改任何配置项,直接点击底部的「保存」按钮。这个操作会强制调度器清除该Job旧的轮询任务实例,按照当前配置重新注册新的轮询任务,90%以上的这类静默故障都可以通过这一步解决。
  • 中断僵死轮询线程
    如果上一步操作无效,进入Jenkins管理后台的「系统监控」-「线程Dump」页面,搜索包含该Job名称、关键词为SCMTrigger或Poll SCM的线程,若线程状态显示为BLOCKED或WAITING,且栈信息卡在文件锁、网络IO等待位置,直接通过页面的中断功能终止该僵死线程即可。
  • 清理本地轮询锁文件
    如果以上操作都无效,登录Jenkins服务器,进入Jenkins主目录下的jobs/<对应Job的名称>路径,删除目录下的.pollingLock锁文件和旧的scm-polling.log文件,回到Jenkins页面对该Job执行「从磁盘重载配置」操作即可。

内容的提问来源于stack exchange,提问作者Alphie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 15:48:23