-
Bug
-
Resolution: Duplicate
-
Major
-
None
-
Jenkins (Core) 2.149
Pipeline Groovy (i.e. workflow-cps) Plugin 2.60
This happened just once so far; about two days after updating a set of Jenkins plugins (but I am not sure at all, if the CME is related to the update), e.g.:
- workflow-api:2.31 (was: 2.29)
- workflow-basic-steps:2.12 (was: 2.11)
- workflow-cps:2.60 (was: 2.57)
- workflow-durable-task-step:2.25 (was: 2.22)
- workflow-support:2.21 (was: 2.20)
This is the stacktrace from Jenkins console log right before the end of the pipeline build:
2018-11-02 02:22:19 WARNING [org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService reportProblem] Unexpected exception in CPS VM thread: CpsFlowExecution[Owner[ACME-DB/174:ACME-DB #174]] java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909) at java.util.ArrayList$Itr.next(ArrayList.java:859) at org.jenkinsci.plugins.workflow.cps.DSL$ThreadTaskImpl.invokeBody(DSL.java:653) at org.jenkinsci.plugins.workflow.cps.DSL$ThreadTaskImpl.eval(DSL.java:623) at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:192) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:332) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$200(CpsThreadGroup.java:83) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:244) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:232) at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:64) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:131) at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28) at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:59) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)
So the bulk of the build is already finished, there is just one kind of build KPI stage (in a finally block) that does some build stats analysis. So normally (successful) the build finishes like this:
... [Pipeline] stage [Pipeline] { (kpi) [Pipeline] echo Listing all KPIs... [Pipeline] echo [Pipeline] echo Writing new KPI file... [Pipeline] node Running on Jenkins in /var/lib/jenkins/workspace/ACME-DB [Pipeline] { [Pipeline] ws Running in /var/lib/jenkins/workspace/ACME-DB-WS-kpi [Pipeline] { [Pipeline] echo Build Pipeline KPIs: - Build duration: 51 minutes, 37.684 seconds ... time duration since build start - Time duration since build scheduling: 51 minutes, 37.692 seconds - Pipeline net execution time duration: 51 minutes, 26.809 seconds ... in "acme.build" Found no SVN changeset => no cycle time KPI [Pipeline] pwd [Pipeline] plot [Pipeline] } [Pipeline] // ws [Pipeline] } [Pipeline] // node [Pipeline] } [Pipeline] // stage [Pipeline] End of Pipeline Finished: SUCCESS
And in this failure case it finished like this:
... [Pipeline] stage [Pipeline] { (kpi) [Pipeline] echo Listing all KPIs... [Pipeline] echo [Pipeline] echo Writing new KPI file... [Pipeline] node Running on Jenkins in /var/lib/jenkins/workspace/ACME-DB [Pipeline] End of Pipeline java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909) at java.util.ArrayList$Itr.next(ArrayList.java:859) at org.jenkinsci.plugins.workflow.cps.DSL$ThreadTaskImpl.invokeBody(DSL.java:653) at org.jenkinsci.plugins.workflow.cps.DSL$ThreadTaskImpl.eval(DSL.java:623) at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:192) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:332) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$200(CpsThreadGroup.java:83) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:244) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:232) at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:64) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:131) at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28) at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:59) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Finished: FAILURE
And the corresponding code is mostly "hidden" in a shared pipeline library:
... } finally { script.stage('kpi') { buildContext.kpiManager.complete(currentBuild) script.node { acme.ws(deleteAfterUse: true, locationSuffix: '-kpi') { buildContext.buildKpi.setBuildEnd() buildContext.buildKpi.report() } } } }
- duplicates
-
JENKINS-58878 withCredentials hangs
-
- Resolved
-