I'm appearing to hit an issue where a released resource does not get an update on the environment variable once the lock is released. See the following code (with only two resources available in the automation-accounts label)
{{node \{}} {{ parallel (}} {{ "p1": \{}} {{ lock(label: 'automation-accounts', variable: 'ACCOUNTS_VAR', quantity: 1) \{}} {{ echo "A $env.ACCOUNTS_VAR"}} {{ sleep 4}} } {{ },}} {{ "p2": \{}} {{ lock(label: 'automation-accounts', variable: 'ACCOUNTS_VAR', quantity: 1) \{}} {{ echo "B $env.ACCOUNTS_VAR"}} {{ sleep 2}} } {{ },}} {{ "p3": \{}} {{ lock(label: 'automation-accounts', variable: 'ACCOUNTS_VAR', quantity: 1) \{}} {{ }}{{echo "C $env.ACCOUNTS_VAR"}} } } {{ )}} {{}}}
In the log I get the following (note "C null"): [Pipeline] \{ [Pipeline] parallel [Pipeline] [p1] \{ (Branch: p1) [Pipeline] [p2] \{ (Branch: p2) [Pipeline] [p3] \{ (Branch: p3) [Pipeline] [p1] lock [p1] Trying to acquire lock on [Label: automation-accounts, Quantity: 1] [p1] Lock acquired on [Label: automation-accounts, Quantity: 1] [Pipeline] [p1] \{ [Pipeline] [p2] lock [p2] Trying to acquire lock on [Label: automation-accounts, Quantity: 1] [p2] Lock acquired on [Label: automation-accounts, Quantity: 1] [Pipeline] [p2] \{ [Pipeline] [p3] lock [p3] Trying to acquire lock on [Label: automation-accounts, Quantity: 1] [p3] Found 0 available resource(s). Waiting for correct amount: 1. [p3] [Label: automation-accounts, Quantity: 1] is locked, waiting... [Pipeline] [p1] echo [p1] A <Account1> [Pipeline] [p1] sleep [p1] Sleeping for 4 sec [Pipeline] [p2] echo [p2] B <Account2> [Pipeline] [p2] sleep [p2] Sleeping for 2 sec [p3] Lock acquired on [Label: automation-accounts, Quantity: 1] [Pipeline] [p2] } [p2] Lock released on resource [Label: automation-accounts, Quantity: 1] [Pipeline] [p3] \{ [Pipeline] [p2] // lock [Pipeline] [p2] } [Pipeline] [p3] echo {color:#ff0000}[p3] C null{color} [Pipeline] [p3] } [p3] Lock released on resource [Label: automation-accounts, Quantity: 1] [Pipeline] [p3] // lock [Pipeline] [p3] } [Pipeline] [p1] } [p1] Lock released on resource [Label: automation-accounts, Quantity: 1] [Pipeline] [p1] // lock [Pipeline] [p1] } [Pipeline] // parallel [Pipeline] } [Pipeline] // node [Pipeline] End of Pipeline
*Expected Result*: I should get "C <Account2>
Perhaps I'm calling it wrong though? It appears that the lock is being acquired BEFORE the resource is released though this might be just a logging complication of calling it in parallel |
|
|