-
Bug
-
Resolution: Fixed
-
Major
-
None
-
lockable-resources 2.2
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
[p3] C null
[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
- causes
-
JENKINS-62674 Retrieve Names of Resources When Locking Multiple
- Closed
- is blocking
-
JENKINS-54541 Unreserve doesn't set environment variable
- Resolved
- is related to
-
JENKINS-40997 Add way to get locked resource name in pipeline
- Resolved
- links to