Running two builds of pipeline-test2 works fine. The second build gets all 
three resources when the first build has released them.
So seems the problem is when locking on label. The build will only get the 
first release lock.

tirsdag 13. mars 2018 08.44.21 UTC+1 skrev Sverre Moe følgende:
>
> 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/b93d6348-4d7f-4c5c-81e9-78aa392d1acb%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to