-
Bug
-
Resolution: Unresolved
-
Major
-
None
-
The latest and greatest:
* Jenkins (core) 2.129
* Plot Plugin 2.1.0
2 parallel builds (scripted pipeline) executed the "same" plot step at very, very much the same time (as far as I can tell it was seemingly definitely at least the same second, but of course it must have been really the very, very same time) leading to one of the two builds failing with:
java.lang.ArrayIndexOutOfBoundsException: 2 at hudson.plugins.plot.Plot.savePlotData(Plot.java:967) at hudson.plugins.plot.Plot.addBuild(Plot.java:717) at hudson.plugins.plot.PlotBuilder.perform(PlotBuilder.java:223) at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:80) at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:67) at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution$1$1.call(SynchronousNonBlockingStepExecution.java:50) at hudson.security.ACL.impersonate(ACL.java:290) at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution$1.run(SynchronousNonBlockingStepExecution.java:47) 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)
- ... whereas the other one was successful
- Presumably the plot CSV file in the pipeline job folder was corrupted by that, because the next build (not in parallel anymore) failed with the same symptom.
- But must have kind of fixed the corrupt plot CSV file in the pipeline job folder. But in a rather forceful way...
- Because subsequent builds (also not in parallel anymore) then succeeded.
Sad side effects:
- Please note:
- there are in fact 4 consecutive plot step calls
- seemingly the 3rd one collided
- The "interesting"/sad result is:
- in the plot CSV files of the plot step calls #1 and #2 "only" the values/entries/lines of the successful build are missing
- in the plot CSV file of the colliding plot step call #3 there is a huge gap of values/entries/lines: in fact the bulk of the history is lost and the remaining file has less than 10% of the size it had before
- in the plot CSV file of the plot step call #4 (which was skipped due to the failures) the values/entries/lines of the two failing builds are missing; which makes of course sense
(IMHO not related to JENKINS-6913 or JENKINS-43708; but maybe similar to old Jenkins core bugs JENKINS-22516 and JENKINS-25930?)
jglick Can standard JVM synchronization mechanism (e.g. synchronized keyword for synchronized methods) be used in (a) Jenkins plugin code (that is called via pipelines that are executed via groovy CPS whatever magic) and (b) shared Jenkins pipeline library code (that again is called via pipelines that are executed via groovy CPS whatever magic)? Or is something like https://gist.github.com/pditommaso/4616192e50cd333487211d1e37e81d58 necessary? Thanks for any hints!