jenkins - 当 Jenkins 作业 DSL 插件尝试删除一些未引用的作业时,是什么导致堆栈溢出错误?
问题描述
我从用于创建作业的 Jenkins 作业 DSL 文件中删除了一些旧作业。当种子作业正在运行并尝试通过删除它们来处理未引用的作业时,它会因堆栈溢出错误而失败。
以下是错误消息的摘录:
Unreferenced items:
GeneratedJob{name='...'}
GeneratedJob{name='...'}
... about 20 more Unreferenced jobs listed here ...
java.lang.RuntimeException: java.io.IOException: Remote call on JNLP4-connect connection from ***.***.***.net/***.***.**.**:***** failed
at hudson.plugins.tfs.model.Server.execute(Server.java:237)
at hudson.plugins.tfs.model.Workspaces.getListFromServer(Workspaces.java:36)
at hudson.plugins.tfs.model.Workspaces.populateMapFromServer(Workspaces.java:45)
at hudson.plugins.tfs.model.Workspaces.exists(Workspaces.java:71)
at hudson.plugins.tfs.actions.RemoveWorkspaceAction.remove(RemoveWorkspaceAction.java:25)
at hudson.plugins.tfs.TeamFoundationServerScm.processWorkspaceBeforeDeletion(TeamFoundationServerScm.java:465)
at hudson.scm.SCM.processWorkspaceBeforeDeletion(SCM.java:245)
at hudson.model.AbstractProject.performDelete(AbstractProject.java:358)
at hudson.model.AbstractItem.delete(AbstractItem.java:775)
at hudson.model.Job.delete(Job.java:675)
at com.cloudbees.hudson.plugins.folder.AbstractFolder.delete(AbstractFolder.java:1176)
at javaposse.jobdsl.plugin.ExecuteDslScripts.updateGeneratedJobs(ExecuteDslScripts.java:460)
at javaposse.jobdsl.plugin.ExecuteDslScripts.perform(ExecuteDslScripts.java:361)
at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:79)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:741)
at hudson.model.Build$BuildExecution.build(Build.java:206)
at hudson.model.Build$BuildExecution.doRun(Build.java:163)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:504)
at hudson.model.Run.execute(Run.java:1818)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:429)
Caused by: java.io.IOException: Remote call on JNLP4-connect connection from ***.***.***.net/***.***.**.**:***** failed
at hudson.remoting.Channel.call(Channel.java:963)
at hudson.plugins.tfs.model.Server.execute(Server.java:233)
... 22 more
Caused by: java.lang.StackOverflowError
at com.microsoft.tfs.util.listeners.StandardListenerList$ListenerNode.addListener(StandardListenerList.java:304)
at com.microsoft.tfs.util.listeners.StandardListenerList$ListenerNode.addListener(StandardListenerList.java:304)
at com.microsoft.tfs.util.listeners.StandardListenerList$ListenerNode.addListener(StandardListenerList.java:304)
... about 500 more lines like this ...
at com.microsoft.tfs.util.listeners.StandardListenerList$ListenerNode.addListener(StandardListenerList.java:304)
at com.microsoft.tfs.util.listeners.StandardListenerList$ListenerNode.addListener(StandardListenerList.java:304)
ERROR: java.io.IOException: Remote call on JNLP4-connect connection from ***.***.***.net/***.***.**.**:***** failed
Finished: FAILURE
Help us localize this pagePage generated: Feb 2, 2020 2:49:10 PM CSTREST APIJenkins ver. 2.177
我试图通过使用 Jenkins UI 删除作业来解决问题。我在几个受影响的作业中遇到了相同的堆栈溢出错误。我将源代码控制设置从 Team Foundation Server 更改为无,保存了作业,然后将其删除。这奏效了,现在这些工作都被清空了。
我回去再次运行种子作业,但仍然失败并显示此消息。
是什么导致 Jenkins 在尝试删除作业时出现此堆栈溢出错误?
解决方案
推荐阅读
- python - 用熊猫数据框中的剩余行迭代每一行
- javascript - 查找两个或多个数组中的重复项数
- javascript - Set.filter 在 Jest 测试中工作
- javascript - JS Fetch:如何返回带有正文或错误的响应?
- python - 让我的机器人加入发送命令的人,而不是让它在预设的 VC 中
- windows - Inkscape 命令行转换文件列表
- javascript - 包含日期的对象数组,每个月一起统计
- c# - 使用 C# 中的 Google Cloud Translation Service 根据拼写而非含义翻译单词
- python - 如果我导入一个模块,为什么什么都没有运行?
- nco - 如何在 cdo 中的时间线性插值(inttime)后更正时间戳