I created two seperate pipeline jobs to test this with.
Got the same behaviour.
*pipeline-test1*
*def stepsForParallel = [:]stepsForParallel["nodeName4"] =
transformIntoStep("nodeName4")parallel stepsForParalleldef
transformIntoStep(nodeName) { return { node("master") {
lock(label: "testing-repository") { println "Testing lock
label" sleep 60 } } }}*
OUTPUT
*[Pipeline] parallel[Pipeline] [nodeName4] { (Branch: nodeName4)[Pipeline]
[nodeName4] node[nodeName4] Running on Jenkins in
/var/lib/jenkins/workspace/pipeline-test[Pipeline] [nodeName4] {[Pipeline]
[nodeName4] lock[nodeName4] Trying to acquire lock on [Label:
testing-repository][nodeName4] Lock acquired on [Label:
testing-repository][Pipeline] [nodeName4] {[Pipeline] [nodeName4]
echo[nodeName4] Testing lock label[Pipeline] [nodeName4] sleep[nodeName4]
Sleeping for 1 min 0 sec[Pipeline] [nodeName4] }[nodeName4] Lock released
on resource [Label: testing-repository][Pipeline] [nodeName4] //
lock[Pipeline] [nodeName4] }[Pipeline] [nodeName4] // node[Pipeline]
[nodeName4] }[Pipeline] // parallel[Pipeline] End of PipelineFinished:
SUCCESS*
*pipeline-test2*
def stepsForParallel = [:]
stepsForParallel["nodeName1"] = transformIntoStep("nodeName1")
stepsForParallel["nodeName2"] = transformIntoStep("nodeName2")
stepsForParallel["nodeName3"] = transformIntoStep("nodeName3")
parallel stepsForParallel
def transformIntoStep(nodeName) {
return {
node("master") {
if (nodeName.equals("nodeName1")) {
lock(resource: 'testing1-repository') {
println "Testing lock resource"
sleep 30
}
}
if (nodeName.equals("nodeName2")) {
lock(resource: 'testing2-repository') {
println "Testing lock resource"
sleep 30
}
}
if (nodeName.equals("nodeName3")) {
lock(resource: 'testing3-repository') {
println "Testing lock resource"
sleep 30
}
}
}
}
}
*OUTPUT*
*[Pipeline] parallel[Pipeline] [nodeName1] { (Branch: nodeName1)[Pipeline]
[nodeName2] { (Branch: nodeName2)[Pipeline] [nodeName3] { (Branch:
nodeName3)[Pipeline] [nodeName1] node[nodeName1] Running on Jenkins in
/var/lib/jenkins/workspace/pipeline-test3[Pipeline] [nodeName2]
node[Pipeline] [nodeName3] node[nodeName2] Running on Jenkins in
/var/lib/jenkins/workspace/pipeline-test3@2[nodeName3] Running on Jenkins
in /var/lib/jenkins/workspace/pipeline-test3@3[Pipeline] [nodeName1]
{[Pipeline] [nodeName2] {[Pipeline] [nodeName3] {[Pipeline] [nodeName1]
lock[nodeName1] Trying to acquire lock on [testing1-repository][nodeName1]
Found 0 available resource(s). Waiting for correct amount: 1.[nodeName1]
[testing1-repository] is locked, waiting...[Pipeline] [nodeName2]
lock[nodeName2] Trying to acquire lock on [testing2-repository][nodeName2]
Found 0 available resource(s). Waiting for correct amount: 1.[nodeName2]
[testing2-repository] is locked, waiting...[Pipeline] [nodeName3]
lock[nodeName3] Trying to acquire lock on [testing3-repository][nodeName3]
Found 0 available resource(s). Waiting for correct amount: 1.[nodeName3]
[testing3-repository] is locked, waiting...[nodeName1] Lock acquired on
[testing1-repository][Pipeline] [nodeName1] {[Pipeline] [nodeName1]
echo[nodeName1] Testing lock resource[Pipeline] [nodeName1]
sleep[nodeName1] Sleeping for 30 sec[Pipeline] [nodeName1] }[nodeName1]
Lock released on resource [testing1-repository][Pipeline] [nodeName1] //
lock[Pipeline] [nodeName1] }[Pipeline] [nodeName1] // node[Pipeline]
[nodeName1] }Aborted by Sverre Moe[Pipeline] [nodeName3] // lock[Pipeline]
[nodeName2] // lock[Pipeline] [nodeName2] }[Pipeline] [nodeName3]
}[Pipeline] [nodeName2] // node[Pipeline] [nodeName3] // node[Pipeline]
[nodeName2] }[nodeName2] Failed in branch nodeName2[Pipeline] [nodeName3]
}[nodeName3] Failed in branch nodeName3[Pipeline] // parallel[Pipeline] End
of PipelineException:
nullorg.jenkinsci.plugins.workflow.steps.FlowInterruptedException at
org.jenkinsci.plugins.workflow.cps.CpsBodyExecution.cancel(CpsBodyExecution.java:245)
at
org.jenkinsci.plugins.workflow.steps.BodyExecution.cancel(BodyExecution.java:76)
at
org.jenkinsci.plugins.workflow.cps.steps.ParallelStepExecution.stop(ParallelStepExecution.java:67)
at org.jenkinsci.plugins.workflow.cps.CpsThread.stop(CpsThread.java:296) at
org.jenkinsci.plugins.workflow.cps.CpsFlowExecution$6.onSuccess(CpsFlowExecution.java:1083)
at
org.jenkinsci.plugins.workflow.cps.CpsFlowExecution$6.onSuccess(CpsFlowExecution.java:1072)
at
org.jenkinsci.plugins.workflow.cps.CpsFlowExecution$4$1.run(CpsFlowExecution.java:861)
at
org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$1.run(CpsVmExecutorService.java:35)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
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 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:1142)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)Finished: ABORTED*
I had to abort this build because it had stalled.
All resources where free, but two of the parallell executions never started.
Resources
testing1-repository FREE
testing2-repository FREE
testing3-repository FREE
Labels
testing-repository 3 free resources
--
You received this message because you are subscribed to the Google Groups
"Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/jenkinsci-users/a1090e44-2fcf-4546-aa75-607b07604221%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.