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 jenkinsci-users+unsubscr...@googlegroups.com. 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.