[JIRA] (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

閲覧: 610 回
最初の未読メッセージにスキップ

brandon.scot.saunders@gmail.com (JIRA)

未読、
2018/03/14 15:13:022018/03/14
To: jenkinsc...@googlegroups.com
Brandon Saunders updated an issue
 
Jenkins / Bug 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
Change By: Brandon Saunders
Summary: Locked resources using the variable parameter do not get set reset to the variable once released to another requester and only appear as null on subsequent locks
Add Comment Add Comment
 
This message was sent by Atlassian JIRA (v7.3.0#73011-sha1:3c73d0e)
Atlassian logo

brandon.scot.saunders@gmail.com (JIRA)

未読、
2018/03/14 15:15:022018/03/14
To: jenkinsc...@googlegroups.com
Brandon Saunders updated an issue
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

tskrainar@icloud.com (JIRA)

未読、
2018/03/15 16:50:022018/03/15
To: jenkinsc...@googlegroups.com

kacik.jan@outlook.com (JIRA)

未読、
2018/03/20 5:57:022018/03/20
To: jenkinsc...@googlegroups.com

We are experiencing the same issue. When you try to lock a resource and it has to wait in the queue for some time, then it will get null in the variable.

jeroen.bogers@tomtom.com (JIRA)

未読、
2018/03/20 10:35:032018/03/20
To: jenkinsc...@googlegroups.com

It seems that if the lock can be immediately granted, the variable is set. If waiting on the resource is needed it is not set.
I suspect the error is on line 51 of src/main/java/org/jenkins/plugins/lockableresources/LockStepExecution.java

The code there states:

 		LockableResourcesStruct resourceHolder = new LockableResourcesStruct(resources, step.label, step.quantity);

I think this should have been (in accordance with the added LockableResourcesStruct on line 56 of src/main/java/org/jenkins/plugins/lockableresources/queue/LockableResourcesStruct.java):

 		LockableResourcesStruct resourceHolder = new LockableResourcesStruct(resources, step.label, step.quantity, step.variable);

jeroen.bogers@tomtom.com (JIRA)

未読、
2018/03/20 10:38:012018/03/20
To: jenkinsc...@googlegroups.com
Jeroen Bogers edited a comment on Bug JENKINS-50176
It seems that if the lock can be immediately granted, the variable is set. If waiting on the resource is needed it is not set.
I suspect the error is on line 51 of src/main/java/org/jenkins/plugins/lockableresources/LockStepExecution.java

The code there states:
{code:java}

   LockableResourcesStruct resourceHolder = new LockableResourcesStruct(resources, step.label, step.quantity);
{code}


I think this should have been (in accordance with the added LockableResourcesStruct on line 56 of src/main/java/org/jenkins/plugins/lockableresources/queue/LockableResourcesStruct.java):
{code:java}

   LockableResourcesStruct resourceHolder = new LockableResourcesStruct(resources, step.label, step.quantity, step.variable);
{code}

This is because if the lock is queued instead of granting the lock directly (with the variable as part of the 'lock' call, the resourceHolder is put on the queue.
When the lock is then granted the variable name is looked up in the LockableResourcesStruct but it is not set and thus the environment variable will not be set.

jeroen.bogers@tomtom.com (JIRA)

未読、
2018/03/20 10:45:032018/03/20
To: jenkinsc...@googlegroups.com


EDIT: A PR was already created by 'boblloyd' to fix this issue: https://github.com/jenkinsci/lockable-resources-plugin/pull/95

jeroen@hltools.com (JIRA)

未読、
2018/03/21 4:10:022018/03/21
To: jenkinsc...@googlegroups.com

jeroen@hltools.com (JIRA)

未読、
2018/03/21 4:12:032018/03/21
To: jenkinsc...@googlegroups.com

brandon.scot.saunders@gmail.com (JIRA)

未読、
2018/03/28 18:30:022018/03/28
To: jenkinsc...@googlegroups.com
Brandon Saunders commented on Bug JENKINS-50176
 
Re: 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

Any update on this Jeroen Bogers?  It looks like the fix is ready but some unit tests are blocking the ability to merge?  Any followup on why it would work in windows but not linux?

jeroen@hltools.com (JIRA)

未読、
2018/03/29 10:52:042018/03/29
To: jenkinsc...@googlegroups.com

Brandon Saunders, sadly I have no follow up to offer on this. I'm not the owner of the pull request and have no special access.

To me it seems the build failure is just a random failure on the build server (it encountered a timeout were I would expect none). I have built the plugin locally (on Linux) and ran the same tests without any problems.
Since then I have taken that own build and installed it in my Jenkins instead as my team was being blocked by the issue. It has been running without issue for a few days now.

It is up to Antonio Muñiz now to take the patch

{boblloyd}

provided and move forward with it.

jeroen@hltools.com (JIRA)

未読、
2018/03/29 10:52:042018/03/29
To: jenkinsc...@googlegroups.com
Jeroen Bogers edited a comment on Bug JENKINS-50176
[~avidviewer], sadly I have no follow up to offer on this. I'm not the owner of the pull request and have no special access.


To me it seems the build failure is just a random failure on the build server (it encountered a timeout were I would expect none). I have built the plugin locally (on Linux) and ran the same tests without any problems.
Since then I have taken that own build and installed it in my Jenkins instead as my team was being blocked by the issue. It has been running without issue for a few days now.

It is up to [~amuniz] now to take the patch { { boblloyd} } provided and move forward with it.

curtis.coleman@viasat.com (JIRA)

未読、
2018/04/23 16:36:032018/04/23
To: jenkinsc...@googlegroups.com

jeroen@hltools.com (JIRA)

未読、
2018/05/03 5:06:022018/05/03
To: jenkinsc...@googlegroups.com

anthuwan13@gmail.com (JIRA)

未読、
2018/06/01 19:11:042018/06/01
To: jenkinsc...@googlegroups.com

vikashlegend@gmail.com (JIRA)

未読、
2018/07/10 12:36:032018/07/10
To: jenkinsc...@googlegroups.com

can somebody please clarify if the changes are merged to master?

i still see below struct not updated with variable name.

 

resourceHolderList.add(new LockableResourcesStruct(resources, resource.label, resource.quantity));
   
This message was sent by Atlassian JIRA (v7.10.1#710002-sha1:6efc396)

vikashlegend@gmail.com (JIRA)

未読、
2018/07/10 12:39:042018/07/10
To: jenkinsc...@googlegroups.com
vikash srivastava edited a comment on Bug JENKINS-50176
can somebody please clarify if the changes are merged to master?

i still see below struct not updated with variable name.

 
|resourceHolderList.add(new LockableResourcesStruct(resources, resource.label, resource.quantity));|
|
  |


my local changes.

  |

resourceHolderList.add(new LockableResourcesStruct(resources, resource.label, resource.quantity,step.variable,step.node));

INUGUNTI.JAGADEESH@GMAIL.COM (JIRA)

未読、
2018/09/11 16:24:032018/09/11
To: jenkinsc...@googlegroups.com

Jeroen Bogers  We are still seeing this issue with lockable resource plugin ,  I dont see changes in PR #87 merged to master either .

 

Please let us know if someone is working/looking into this issue , it will be really helpful if this gets resolved .

This message was sent by Atlassian Jira (v7.11.2#711002-sha1:fdc329d)

INUGUNTI.JAGADEESH@GMAIL.COM (JIRA)

未読、
2018/09/11 16:27:032018/09/11
To: jenkinsc...@googlegroups.com
Jagadeesh Inugunti edited a comment on Bug JENKINS-50176
[~jbogers]  We are still seeing this issue with lockable resource plugin ,   I dont see changes in PR #87 merged to master either .

 

Please let us know if someone is working/looking into this issue , it will be really helpful if this gets resolved .

stefan.rystedt@gmail.com (JIRA)

未読、
2018/12/05 5:28:022018/12/05
To: jenkinsc...@googlegroups.com

I have created PR#117 which should solve this issue. My way of solving it is a little bit cleaner according to my  opinion. But the I have not done any Jenkins plugin development until I did this fix. It can be merged as is thought.

stefan.rystedt@gmail.com (JIRA)

未読、
2018/12/05 5:30:022018/12/05
To: jenkinsc...@googlegroups.com
Stefan Rystedt edited a comment on Bug JENKINS-50176
I have created PR#117 which should solve this issue. My way of solving it is a little bit cleaner according to my  opinion. But the then I have not done any Jenkins plugin development until I did this fix. It can be merged as is thought.

stevengfoster@gmail.com (JIRA)

未読、
2018/12/05 6:57:012018/12/05
To: jenkinsc...@googlegroups.com

niels.wegner@edict.de (JIRA)

未読、
2018/12/13 9:24:032018/12/13
To: jenkinsc...@googlegroups.com

aconstantinjr@gmail.com (JIRA)

未読、
2019/05/10 4:48:022019/05/10
To: jenkinsc...@googlegroups.com

aconstantinjr@gmail.com (JIRA)

未読、
2019/05/10 4:53:022019/05/10
To: jenkinsc...@googlegroups.com

vikashlegend@gmail.com (JIRA)

未読、
2019/05/10 5:05:022019/05/10
To: jenkinsc...@googlegroups.com

aconstantinjr@gmail.com (JIRA)

未読、
2019/05/14 5:42:222019/05/14
To: jenkinsc...@googlegroups.com

vikash srivastava the reason for my question is that since June 2018 I could only see a security fix released in March and one bug fixed in Jan. And all pull requests, except one, have failed the CI build after the last release: https://github.com/jenkinsci/lockable-resources-plugin/pulls

I have also browsed 5-6 PRs in the list above, and they all seem to be waiting for comments or actions from maintainers for a few months, including the PR that fixes this issue.

cgarcia@intesis.com (JIRA)

未読、
2019/06/06 8:48:072019/06/06
To: jenkinsc...@googlegroups.com

The same issue is reproduced in my environment. Does anybody know if there is a feasible solution? Is there any release planned to address this issue?

chead@chead.ca (JIRA)

未読、
2019/06/06 9:55:032019/06/06
To: jenkinsc...@googlegroups.com

There is a workaround (of sorts) which we deployed in our environment (we are using a declarative pipeline): put a loop around the lock statement which breaks out only once the variable is set successfully. It means you lose the FIFO property, and occasionally it can deadlock if there are a lot of waiters, but in a low-contention case the waiter will loop and on the second iteration the lock will be free so it will get it and set the variable.

vikashlegend@gmail.com (JIRA)

未読、
2019/07/10 3:04:032019/07/10
To: jenkinsc...@googlegroups.com

vikashlegend@gmail.com (JIRA)

未読、
2019/07/10 3:05:052019/07/10
To: jenkinsc...@googlegroups.com
vikash srivastava edited a comment on Bug JENKINS-50176

tobias-jenkins@23.gs (JIRA)

未読、
2019/10/19 17:21:052019/10/19
To: jenkinsc...@googlegroups.com

tobias-jenkins@23.gs (JIRA)

未読、
2019/11/01 19:25:042019/11/01
To: jenkinsc...@googlegroups.com
全員に返信
投稿者に返信
転送
新着メール 0 件