首页 > 解决方案 > 当 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 在尝试删除作业时出现此堆栈溢出错误?

标签: jenkinsjenkins-job-dsl

解决方案


推荐阅读