Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-34433

Pipeline locks not signalled on manual unreserving of resources

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Major Major
    • None
    • Jenkins 1.642.4.2 with Cloudbees Enterprise 15.11
      Lockable Resource plugin 1.8
      Lockable Resource plugin 2.2
    • Pipeline - April 2018
    • lockable-resources 2.3

      Add a lockable resource named "test_res"

      Add a pipeline job with only this code:

      node {

      lock('test_res') {
      echo 'locked'
      }
      echo 'unlocked'
      }

      Run this job. It should work fine.

      Now perform a manual reserve of the resource via the lockable resource interface.
      Start the job again.
      It correctly waits for the resource:
      [Pipeline] node {
      [Pipeline] Lock shared resource : Start
      Trying to acquire lock on [test_res]
      [test_res] is locked, waiting...

      Now go back to the Lockable Resource user interface.
      Manually unlock the resource.

      Expected result: the locked job should retry the lock, see that it has been freed, continue (locking the resource and freeing it) and finish correctly.

      Observed result: after waiting for > 5 minutes, nothing changed. The job stayed in exactly the same situation (output as above) and had to be cancelled.

          [JENKINS-34433] Pipeline locks not signalled on manual unreserving of resources

          Roman Ivanov added a comment -

          This issue still there. Jenkins 2.62, Lockable Resources plugin 2.0

          {{Trying to acquire lock on [test] }}

          Found 0 available resource(s). Waiting for correct amount: 1.

          [test] is locked, waiting...

          Roman Ivanov added a comment - This issue still there. Jenkins 2.62, Lockable Resources plugin 2.0 {{Trying to acquire lock on [test] }} Found 0 available resource(s). Waiting for correct amount: 1. [test] is locked, waiting...

          Technically, it does seem to retry the lock - provided another pipeline signals that the lock is now released.

          My theory, that I have not tested in the slightest yet, is that the plugin does not broadcast the lock release the same way a pipeline does.

          Zalan Meggyesi added a comment - Technically, it does seem to retry the lock - provided another pipeline signals that the lock is now released. My theory, that I have not tested in the slightest yet, is that the plugin does not broadcast the lock release the same way a pipeline does.

          David Crouch added a comment -

          I am experiencing this issue as well. Any pipeline that becomes locked on a manually reserved resource will never unlock, even after the resource is released.This functionally makes the manual lock reserve inoperable. I believe another pipeline job locking and then unlocking the resource will "signal" the deadlocked job, but this still results in a mostly unusable manual reserve.

          I would suggest changing the title of this issue to reflect the scope and severity, something to the effect of:

          Pipeline jobs will deadlock when trying to lock manually reserved resource

           

          David Crouch added a comment - I am experiencing this issue as well. Any pipeline that becomes locked on a manually reserved resource will never unlock, even after the resource is released.This functionally makes the manual lock reserve inoperable. I believe another pipeline job locking and then unlocking the resource will "signal" the deadlocked job, but this still results in a mostly unusable manual reserve. I would suggest changing the title of this issue to reflect the scope and severity, something to the effect of: Pipeline jobs will deadlock when trying to lock manually reserved resource  

          Andrew Bayer added a comment -

          zmeggyesi - that sounds right. I'll need to dig into this later today, but I think this shouldn't be too hard to fix.

          Andrew Bayer added a comment - zmeggyesi - that sounds right. I'll need to dig into this later today, but I think this shouldn't be too hard to fix.

          Andrew Bayer added a comment -

          Andrew Bayer added a comment - PR up at https://github.com/jenkinsci/lockable-resources-plugin/pull/70

          Andrew Bayer added a comment -

          Gonna take some time this week to resurrect this.

          Andrew Bayer added a comment - Gonna take some time this week to resurrect this.

          Andrew Bayer added a comment -

          And PR updated.

          Andrew Bayer added a comment - And PR updated.

          Code changed in jenkins
          User: Andrew Bayer
          Path:
          src/main/java/org/jenkins/plugins/lockableresources/LockableResourcesManager.java
          src/test/java/org/jenkins/plugins/lockableresources/LockStepTest.java
          http://jenkins-ci.org/commit/lockable-resources-plugin/d18f7baebe46220404a10175303bb0de41cdddb5
          Log:
          [FIXED JENKINS-34433] Signal queued Pipeline tasks on unreserve

          Previously, we had already been signalling queued Pipeline tasks on
          unlocking, but not on unreserving. So...let's do that.

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Andrew Bayer Path: src/main/java/org/jenkins/plugins/lockableresources/LockableResourcesManager.java src/test/java/org/jenkins/plugins/lockableresources/LockStepTest.java http://jenkins-ci.org/commit/lockable-resources-plugin/d18f7baebe46220404a10175303bb0de41cdddb5 Log: [FIXED JENKINS-34433] Signal queued Pipeline tasks on unreserve Previously, we had already been signalling queued Pipeline tasks on unlocking, but not on unreserving. So...let's do that.

          Andrew Bayer added a comment -

          Will be in next release (2.3?)

          Andrew Bayer added a comment - Will be in next release (2.3?)

          Sergiu Ionescu added a comment - - edited

          I can confirm the issue still occurs with version 2.2 and Jenkins ver. 2.91. Do you have an ETA for the next release?

           

          Thanks.

          Sergiu Ionescu added a comment - - edited I can confirm the issue still occurs with version 2.2 and Jenkins ver. 2.91. Do you have an ETA for the next release?   Thanks.

            abayer Andrew Bayer
            xvdessel Xavier Van Dessel
            Votes:
            17 Vote for this issue
            Watchers:
            22 Start watching this issue

              Created:
              Updated:
              Resolved: