-
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
[JENKINS-50176] Locked resources using the variable parameter do not get reset to the variable once released to another requester and only appear as null on subsequent locks
Description |
Original:
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 {{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? |
New:
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 ACCOUNTS_VAR 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? |
Description |
Original:
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 ACCOUNTS_VAR 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? |
New:
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? |
Summary | Original: Locked resources using the variable parameter do not get set to the variable once released to another requester | New: Locked resources using the variable parameter do not get reset to the variable once released to another requester and only appear as null on subsequent locks |
Description |
Original:
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? |
New:
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 |
Link |
New:
This issue is related to |
Remote Link | New: This issue links to "PR #95 (Web Link)" [ 20293 ] |
Priority | Original: Minor [ 4 ] | New: Major [ 3 ] |
Environment | New: lockable-resources 2.2 |
Remote Link | New: This issue links to "PR #87 (Web Link)" [ 20613 ] |
Remote Link | New: This issue links to "PR #117 (Web Link)" [ 22081 ] |