重启Jenkins出现加载Owner失败报错,提示无对应构建记录如何解决?
解决Jenkins加载Owner失败及构建不存在的异常
我之前碰到过一模一样的Jenkins报错,折腾了半天终于解决了,本质原因就是Jenkins的元数据记录和磁盘上实际的构建文件不匹配——Jenkins数据库里记着有某个构建,但对应的构建文件夹已经被删除(可能是手动清理、磁盘问题或者插件bug导致的)。下面是亲测有效的解决步骤:
方法一:手动清理失效构建记录
- 先定位报错里的问题Job:分别是
setupProject和run_moa_new,进入这两个Job的配置页面 - 找到「构建保留策略」(英文是
Discard old builds),临时把“最大保留构建数”设为1,保存配置 - 等待几分钟让Jenkins自动清理失效记录,之后再改回你原来的保留规则
- 如果自动清理没生效,可以直接到Jenkins的工作目录操作:
- 找到
$JENKINS_HOME/jobs/[Job名称]/builds路径(比如$JENKINS_HOME/jobs/run_moa_new/builds) - 删除报错里提到的不存在的构建编号文件夹(比如
362798和13582) - 重启Jenkins服务
- 找到
方法二:用脚本控制台强制清理失效执行记录
如果手动清理还是不行,可以用Jenkins的脚本控制台直接操作内部数据:
- 进入Jenkins后台的「Manage Jenkins」→「Script Console」
- 运行以下Groovy脚本(记得替换
jobName为你的问题Job名称,比如run_moa_new):
import org.jenkinsci.plugins.workflow.flow.FlowExecutionList import org.jenkinsci.plugins.workflow.job.WorkflowJob def jobName = "run_moa_new" def job = Jenkins.instance.getItem(jobName) if (job instanceof WorkflowJob) { def executions = FlowExecutionList.get(job) def invalidExecutions = executions.findAll { e -> try { e.getOwner().get() return false } catch (Exception ex) { return true } } invalidExecutions.each { e -> println "Removing invalid execution: ${e.id}" executions.remove(e) } println "Removed ${invalidExecutions.size()} invalid executions" } else { println "Job ${jobName} is not a WorkflowJob" }
- 运行完成后,刷新页面再重启Jenkins即可
方法三:检查Workflow插件兼容性
这个报错有时候和Workflow系列插件的版本冲突有关:
- 进入「Manage Jenkins」→「Manage Plugins」→「Updates」标签,检查
Workflow Job、Workflow Execution Steps等核心Workflow插件是否有更新,更新到稳定版后重启Jenkins - 如果更新后问题依旧,可以尝试回退到之前能正常运行的插件版本(在「Installed」标签里找到对应插件,点击「Rollback」)
注意事项
- 操作前一定要备份
$JENKINS_HOME目录,避免误操作导致数据丢失 - 如果是分布式Jenkins集群,要同步检查所有Agent节点的构建目录,确保没有残留的失效构建记录
内容的提问来源于stack exchange,提问作者nanci
相关产品推荐
相关产品推荐

