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

Deadlocks involving Queue

    XMLWordPrintable

Details

    Description

      Not to be confused with JENKINS-25890. Do not recall the circumstances but probably remains valid.

      "AtmostOneTaskExecutor[hudson.model.Queue$1@1bd18aa] [#9]":
        waiting to lock monitor 0x00007f60441ef4b8 (object 0x0000000707804108, a hudson.model.RunMap),
        which is held by "CpsStepContext.getProgramPromise [#4]"
      "CpsStepContext.getProgramPromise [#4]":
        waiting for ownable synchronizer 0x00000007063e73b8, (a java.util.concurrent.locks.ReentrantLock$NonfairSync),
        which is held by "AtmostOneTaskExecutor[hudson.model.Queue$1@1bd18aa] [#9]"
      "AtmostOneTaskExecutor[hudson.model.Queue$1@1bd18aa] [#9]":
      	at jenkins.model.lazy.AbstractLazyLoadRunMap.load(AbstractLazyLoadRunMap.java:465)
      	- waiting to lock <0x0000000707804108> (a hudson.model.RunMap)
      	at jenkins.model.lazy.AbstractLazyLoadRunMap.load(AbstractLazyLoadRunMap.java:448)
      	at jenkins.model.lazy.AbstractLazyLoadRunMap.getByNumber(AbstractLazyLoadRunMap.java:356)
      	at jenkins.model.lazy.LazyBuildMixIn.getBuildByNumber(LazyBuildMixIn.java:226)
      	at org.jenkinsci.plugins.workflow.job.WorkflowJob.getBuildByNumber(WorkflowJob.java:199)
      	at org.jenkinsci.plugins.workflow.job.WorkflowJob.getBuildByNumber(WorkflowJob.java:92)
      	at jenkins.model.PeepholePermalink.resolve(PeepholePermalink.java:95)
      	at hudson.model.Job.getLastSuccessfulBuild(Job.java:888)
      	at hudson.model.Job.getEstimatedDurationCandidates(Job.java:975)
      	at hudson.model.Job.getEstimatedDuration(Job.java:1009)
      	at hudson.model.Run.getEstimatedDuration(Run.java:2304)
      	at org.jenkinsci.plugins.workflow.support.steps.ExecutorStepExecution$PlaceholderTask.getEstimatedDuration(ExecutorStepExecution.java:313)
      	at hudson.model.queue.MappingWorksheet.<init>(MappingWorksheet.java:335)
      	at hudson.model.queue.MappingWorksheet.<init>(MappingWorksheet.java:318)
      	at hudson.model.Queue.maintain(Queue.java:1358)
      	at hudson.model.Queue$1.call(Queue.java:334)
      	at hudson.model.Queue$1.call(Queue.java:331)
      	at jenkins.util.AtmostOneTaskExecutor$1.call(AtmostOneTaskExecutor.java:101)
      	at jenkins.util.AtmostOneTaskExecutor$1.call(AtmostOneTaskExecutor.java:91)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      	at hudson.remoting.AtmostOneThreadExecutor$Worker.run(AtmostOneThreadExecutor.java:110)
      	at java.lang.Thread.run(Thread.java:745)
      "CpsStepContext.getProgramPromise [#4]":
      	at sun.misc.Unsafe.park(Native Method)
      	- parking to wait for  <0x00000007063e73b8> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
      	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
      	at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
      	at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:870)
      	at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1199)
      	at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:209)
      	at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:285)
      	at hudson.model.Queue.schedule2(Queue.java:585)
      	at hudson.model.Queue.schedule2(Queue.java:714)
      	at hudson.model.Queue.schedule(Queue.java:707)
      	at hudson.model.Queue.schedule(Queue.java:692)
      	at org.jenkinsci.plugins.workflow.job.WorkflowRun.onLoad(WorkflowRun.java:402)
      	at hudson.model.RunMap.retrieve(RunMap.java:223)
      	at hudson.model.RunMap.retrieve(RunMap.java:57)
      	at jenkins.model.lazy.AbstractLazyLoadRunMap.load(AbstractLazyLoadRunMap.java:465)
      	- locked <0x0000000707804108> (a hudson.model.RunMap)
      	at jenkins.model.lazy.AbstractLazyLoadRunMap.load(AbstractLazyLoadRunMap.java:448)
      	at jenkins.model.lazy.AbstractLazyLoadRunMap.getByNumber(AbstractLazyLoadRunMap.java:356)
      	at hudson.model.RunMap.getById(RunMap.java:203)
      	at org.jenkinsci.plugins.workflow.job.WorkflowRun$Owner.run(WorkflowRun.java:590)
      	at org.jenkinsci.plugins.workflow.job.WorkflowRun$Owner.get(WorkflowRun.java:600)
      	at org.jenkinsci.plugins.workflow.cps.CpsStepContext.getFlowExecution(CpsStepContext.java:426)
      	at org.jenkinsci.plugins.workflow.cps.CpsStepContext.access$000(CpsStepContext.java:93)
      	at org.jenkinsci.plugins.workflow.cps.CpsStepContext$1.run(CpsStepContext.java:247)
      	at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
      	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
      	at java.lang.Thread.run(Thread.java:745)
      

      Attachments

        Issue Links

          Activity

            jglick Jesse Glick added a comment -

            Another one involving getEstimatedDuration and possibly related:

            "Computer.threadPoolForRemoting [#6]":
              waiting for ownable synchronizer 0x000000070623d790, (a java.util.concurrent.locks.ReentrantLock$NonfairSync),
              which is held by "AtmostOneTaskExecutor[hudson.model.Queue$1@39a19bf0] [#7]"
            "AtmostOneTaskExecutor[hudson.model.Queue$1@39a19bf0] [#7]":
              waiting to lock monitor 0x00007f42f00217d8 (object 0x000000070707f938, a java.util.HashMap),
              which is held by "Computer.threadPoolForRemoting [#6]"
            "Computer.threadPoolForRemoting [#6]":
            	at sun.misc.Unsafe.park(Native Method)
            	- parking to wait for  <0x000000070623d790> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
            	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
            	at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
            	at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:870)
            	at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1199)
            	at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:209)
            	at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:285)
            	at hudson.model.Queue._withLock(Queue.java:1205)
            	at hudson.model.Queue.withLock(Queue.java:1143)
            	at hudson.model.Computer.removeExecutor(Computer.java:977)
            	at hudson.model.Executor.finish2(Executor.java:435)
            	at hudson.model.Executor.completedAsynchronous(Executor.java:448)
            	at jenkins.model.queue.AsynchronousExecution.completed(AsynchronousExecution.java:122)
            	- locked <0x0000000707effcd8> (a org.jenkinsci.plugins.workflow.support.steps.ExecutorStepExecution$PlaceholderTask$PlaceholderExecutable$1)
            	at org.jenkinsci.plugins.workflow.support.steps.ExecutorStepExecution$PlaceholderTask.finish(ExecutorStepExecution.java:339)
            	- locked <0x000000070707f938> (a java.util.HashMap)
            	at org.jenkinsci.plugins.workflow.support.steps.ExecutorStepExecution$PlaceholderTask.access$400(ExecutorStepExecution.java:144)
            	at org.jenkinsci.plugins.workflow.support.steps.ExecutorStepExecution$PlaceholderTask$Callback.finished(ExecutorStepExecution.java:370)
            	at org.jenkinsci.plugins.workflow.steps.BodyExecutionCallback$TailCall.onSuccess(BodyExecutionCallback.java:114)
            	at org.jenkinsci.plugins.workflow.cps.CpsBodyExecution$SuccessAdapter.receive(CpsBodyExecution.java:311)
            	at com.cloudbees.groovy.cps.impl.ValueBoundContinuation.receive(ValueBoundContinuation.java:21)
            	at com.cloudbees.groovy.cps.Outcome.resumeFrom(Outcome.java:73)
            	at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:137)
            	at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$001(SandboxContinuable.java:19)
            	at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:33)
            	at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:30)
            	at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox(GroovySandbox.java:106)
            	at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:30)
            	at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:164)
            	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:271)
            	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$000(CpsThreadGroup.java:71)
            	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:180)
            	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:178)
            	at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:47)
            	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
            	at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:112)
            	at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
            	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
            	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
            	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
            	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
            	at java.lang.Thread.run(Thread.java:745)
            "AtmostOneTaskExecutor[hudson.model.Queue$1@39a19bf0] [#7]":
            	at org.jenkinsci.plugins.workflow.support.steps.ExecutorStepExecution$PlaceholderTask.finish(ExecutorStepExecution.java:333)
            	- waiting to lock <0x000000070707f938> (a java.util.HashMap)
            	at org.jenkinsci.plugins.workflow.support.steps.ExecutorStepExecution$PlaceholderTask.run(ExecutorStepExecution.java:281)
            	at org.jenkinsci.plugins.workflow.support.steps.ExecutorStepExecution$PlaceholderTask.getEstimatedDuration(ExecutorStepExecution.java:307)
            	at hudson.model.queue.MappingWorksheet.<init>(MappingWorksheet.java:335)
            	at hudson.model.queue.MappingWorksheet.<init>(MappingWorksheet.java:318)
            	at hudson.model.Queue.maintain(Queue.java:1358)
            	at hudson.model.Queue$1.call(Queue.java:334)
            	at hudson.model.Queue$1.call(Queue.java:331)
            	at jenkins.util.AtmostOneTaskExecutor$1.call(AtmostOneTaskExecutor.java:101)
            	at jenkins.util.AtmostOneTaskExecutor$1.call(AtmostOneTaskExecutor.java:91)
            	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
            	at hudson.remoting.AtmostOneThreadExecutor$Worker.run(AtmostOneThreadExecutor.java:110)
            	at java.lang.Thread.run(Thread.java:745)
            
            jglick Jesse Glick added a comment - Another one involving getEstimatedDuration and possibly related: "Computer.threadPoolForRemoting [#6]": waiting for ownable synchronizer 0x000000070623d790, (a java.util.concurrent.locks.ReentrantLock$NonfairSync), which is held by "AtmostOneTaskExecutor[hudson.model.Queue$1@39a19bf0] [#7]" "AtmostOneTaskExecutor[hudson.model.Queue$1@39a19bf0] [#7]": waiting to lock monitor 0x00007f42f00217d8 (object 0x000000070707f938, a java.util.HashMap), which is held by "Computer.threadPoolForRemoting [#6]" "Computer.threadPoolForRemoting [#6]": at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x000000070623d790> (a java.util.concurrent.locks.ReentrantLock$NonfairSync) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836) at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:870) at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1199) at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:209) at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:285) at hudson.model.Queue._withLock(Queue.java:1205) at hudson.model.Queue.withLock(Queue.java:1143) at hudson.model.Computer.removeExecutor(Computer.java:977) at hudson.model.Executor.finish2(Executor.java:435) at hudson.model.Executor.completedAsynchronous(Executor.java:448) at jenkins.model.queue.AsynchronousExecution.completed(AsynchronousExecution.java:122) - locked <0x0000000707effcd8> (a org.jenkinsci.plugins.workflow.support.steps.ExecutorStepExecution$PlaceholderTask$PlaceholderExecutable$1) at org.jenkinsci.plugins.workflow.support.steps.ExecutorStepExecution$PlaceholderTask.finish(ExecutorStepExecution.java:339) - locked <0x000000070707f938> (a java.util.HashMap) at org.jenkinsci.plugins.workflow.support.steps.ExecutorStepExecution$PlaceholderTask.access$400(ExecutorStepExecution.java:144) at org.jenkinsci.plugins.workflow.support.steps.ExecutorStepExecution$PlaceholderTask$Callback.finished(ExecutorStepExecution.java:370) at org.jenkinsci.plugins.workflow.steps.BodyExecutionCallback$TailCall.onSuccess(BodyExecutionCallback.java:114) at org.jenkinsci.plugins.workflow.cps.CpsBodyExecution$SuccessAdapter.receive(CpsBodyExecution.java:311) at com.cloudbees.groovy.cps.impl.ValueBoundContinuation.receive(ValueBoundContinuation.java:21) at com.cloudbees.groovy.cps.Outcome.resumeFrom(Outcome.java:73) at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:137) at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$001(SandboxContinuable.java:19) at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:33) at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:30) at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox(GroovySandbox.java:106) at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:30) at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:164) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:271) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$000(CpsThreadGroup.java:71) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:180) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:178) at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:47) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:112) at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) "AtmostOneTaskExecutor[hudson.model.Queue$1@39a19bf0] [#7]": at org.jenkinsci.plugins.workflow.support.steps.ExecutorStepExecution$PlaceholderTask.finish(ExecutorStepExecution.java:333) - waiting to lock <0x000000070707f938> (a java.util.HashMap) at org.jenkinsci.plugins.workflow.support.steps.ExecutorStepExecution$PlaceholderTask.run(ExecutorStepExecution.java:281) at org.jenkinsci.plugins.workflow.support.steps.ExecutorStepExecution$PlaceholderTask.getEstimatedDuration(ExecutorStepExecution.java:307) at hudson.model.queue.MappingWorksheet.<init>(MappingWorksheet.java:335) at hudson.model.queue.MappingWorksheet.<init>(MappingWorksheet.java:318) at hudson.model.Queue.maintain(Queue.java:1358) at hudson.model.Queue$1.call(Queue.java:334) at hudson.model.Queue$1.call(Queue.java:331) at jenkins.util.AtmostOneTaskExecutor$1.call(AtmostOneTaskExecutor.java:101) at jenkins.util.AtmostOneTaskExecutor$1.call(AtmostOneTaskExecutor.java:91) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at hudson.remoting.AtmostOneThreadExecutor$Worker.run(AtmostOneThreadExecutor.java:110) at java.lang.Thread.run(Thread.java:745)
            jglick Jesse Glick added a comment -

            In JENKINS-25890, Queue is locked while calling PlaceholderTask.getFullDisplayName. That was fixed by making isReady, which getFullDisplayName was calling, nonblocking. The Queue lock was acquired in two reported ways: from WorkflowRun.onLoad, and from ExecutorPickle.rehydrate.

            Here in JENKINS-31614, Queue is locked while calling PlaceholderTask.getEstimatedDuration, again with two reported ways in which the Queue lock might be acquired: from WorkflowRun.onLoad (again), and PlaceholderTask.finish.

            In JENKINS-32304, Queue is locked while calling AfterRestartTask.getEstimatedDuration, while the Queue lock is acquired from ExecutorPickle.rehydrate.

            There is no straightforward way to make either getEstimatedDuration implementation not acquire the RunMap lock, so the original fix of isReady does not help in either of these cases. Need to instead ensure that the Queue lock is not acquired synchronously from onLoad, finish, or rehydrate. In other words, accept that Queue.maintain implementations may wind up acquiring other locks.

            jglick Jesse Glick added a comment - In JENKINS-25890 , Queue is locked while calling PlaceholderTask.getFullDisplayName . That was fixed by making isReady , which getFullDisplayName was calling, nonblocking. The Queue lock was acquired in two reported ways: from WorkflowRun.onLoad , and from ExecutorPickle.rehydrate . Here in JENKINS-31614 , Queue is locked while calling PlaceholderTask.getEstimatedDuration , again with two reported ways in which the Queue lock might be acquired: from WorkflowRun.onLoad (again), and PlaceholderTask.finish . In JENKINS-32304 , Queue is locked while calling AfterRestartTask.getEstimatedDuration , while the Queue lock is acquired from ExecutorPickle.rehydrate . There is no straightforward way to make either getEstimatedDuration implementation not acquire the RunMap lock, so the original fix of isReady does not help in either of these cases. Need to instead ensure that the Queue lock is not acquired synchronously from onLoad , finish , or rehydrate . In other words, accept that Queue.maintain implementations may wind up acquiring other locks.

            Code changed in jenkins
            User: Jesse Glick
            Path:
            CHANGES.md
            api/src/main/java/org/jenkinsci/plugins/workflow/pickles/Pickle.java
            job/src/main/java/org/jenkinsci/plugins/workflow/job/WorkflowRun.java
            support/src/main/java/org/jenkinsci/plugins/workflow/support/pickles/ExecutorPickle.java
            support/src/main/java/org/jenkinsci/plugins/workflow/support/pickles/TryRepeatedly.java
            support/src/main/java/org/jenkinsci/plugins/workflow/support/steps/ExecutorStepExecution.java
            http://jenkins-ci.org/commit/workflow-plugin/c89a054375f4e58947e9926d0be74abc5174a478
            Log:
            [FIXED JENKINS-31614] Avoid acquiring the Queue lock while holding other locks.

            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: CHANGES.md api/src/main/java/org/jenkinsci/plugins/workflow/pickles/Pickle.java job/src/main/java/org/jenkinsci/plugins/workflow/job/WorkflowRun.java support/src/main/java/org/jenkinsci/plugins/workflow/support/pickles/ExecutorPickle.java support/src/main/java/org/jenkinsci/plugins/workflow/support/pickles/TryRepeatedly.java support/src/main/java/org/jenkinsci/plugins/workflow/support/steps/ExecutorStepExecution.java http://jenkins-ci.org/commit/workflow-plugin/c89a054375f4e58947e9926d0be74abc5174a478 Log: [FIXED JENKINS-31614] Avoid acquiring the Queue lock while holding other locks.

            Code changed in jenkins
            User: Jesse Glick
            Path:
            CHANGES.md
            api/src/main/java/org/jenkinsci/plugins/workflow/pickles/Pickle.java
            job/src/main/java/org/jenkinsci/plugins/workflow/job/WorkflowRun.java
            support/src/main/java/org/jenkinsci/plugins/workflow/support/pickles/ExecutorPickle.java
            support/src/main/java/org/jenkinsci/plugins/workflow/support/pickles/TryRepeatedly.java
            support/src/main/java/org/jenkinsci/plugins/workflow/support/steps/ExecutorStepExecution.java
            http://jenkins-ci.org/commit/workflow-plugin/cb65b316d962df06f9fa8d2c2e0a04fdf60e1d52
            Log:
            Merge pull request #289 from jglick/deadlocks-JENKINS-31614

            JENKINS-31614 Avoid acquiring the Queue lock while holding other locks

            Compare: https://github.com/jenkinsci/workflow-plugin/compare/1c87228afa79...cb65b316d962

            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: CHANGES.md api/src/main/java/org/jenkinsci/plugins/workflow/pickles/Pickle.java job/src/main/java/org/jenkinsci/plugins/workflow/job/WorkflowRun.java support/src/main/java/org/jenkinsci/plugins/workflow/support/pickles/ExecutorPickle.java support/src/main/java/org/jenkinsci/plugins/workflow/support/pickles/TryRepeatedly.java support/src/main/java/org/jenkinsci/plugins/workflow/support/steps/ExecutorStepExecution.java http://jenkins-ci.org/commit/workflow-plugin/cb65b316d962df06f9fa8d2c2e0a04fdf60e1d52 Log: Merge pull request #289 from jglick/deadlocks- JENKINS-31614 JENKINS-31614 Avoid acquiring the Queue lock while holding other locks Compare: https://github.com/jenkinsci/workflow-plugin/compare/1c87228afa79...cb65b316d962

            Code changed in jenkins
            User: Jesse Glick
            Path:
            api/src/main/java/org/jenkinsci/plugins/workflow/pickles/Pickle.java
            http://jenkins-ci.org/commit/workflow-api-plugin/9dda0bdb3b033ec77cbaf6a5fbe57b074eec9010
            Log:
            [FIXED JENKINS-31614] Avoid acquiring the Queue lock while holding other locks.
            Originally-Committed-As: c89a054375f4e58947e9926d0be74abc5174a478

            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: api/src/main/java/org/jenkinsci/plugins/workflow/pickles/Pickle.java http://jenkins-ci.org/commit/workflow-api-plugin/9dda0bdb3b033ec77cbaf6a5fbe57b074eec9010 Log: [FIXED JENKINS-31614] Avoid acquiring the Queue lock while holding other locks. Originally-Committed-As: c89a054375f4e58947e9926d0be74abc5174a478

            Code changed in jenkins
            User: Jesse Glick
            Path:
            support/src/main/java/org/jenkinsci/plugins/workflow/support/pickles/TryRepeatedly.java
            http://jenkins-ci.org/commit/workflow-support-plugin/ff9a05c281a59f456052184f063ab09fc119167a
            Log:
            [FIXED JENKINS-31614] Avoid acquiring the Queue lock while holding other locks.
            Originally-Committed-As: c89a054375f4e58947e9926d0be74abc5174a478

            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: support/src/main/java/org/jenkinsci/plugins/workflow/support/pickles/TryRepeatedly.java http://jenkins-ci.org/commit/workflow-support-plugin/ff9a05c281a59f456052184f063ab09fc119167a Log: [FIXED JENKINS-31614] Avoid acquiring the Queue lock while holding other locks. Originally-Committed-As: c89a054375f4e58947e9926d0be74abc5174a478

            Code changed in jenkins
            User: Jesse Glick
            Path:
            job/src/main/java/org/jenkinsci/plugins/workflow/job/WorkflowRun.java
            http://jenkins-ci.org/commit/workflow-job-plugin/6648bd916b07ae2e6f4a95ecc8eac7adc052725f
            Log:
            [FIXED JENKINS-31614] Avoid acquiring the Queue lock while holding other locks.
            Originally-Committed-As: c89a054375f4e58947e9926d0be74abc5174a478

            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: job/src/main/java/org/jenkinsci/plugins/workflow/job/WorkflowRun.java http://jenkins-ci.org/commit/workflow-job-plugin/6648bd916b07ae2e6f4a95ecc8eac7adc052725f Log: [FIXED JENKINS-31614] Avoid acquiring the Queue lock while holding other locks. Originally-Committed-As: c89a054375f4e58947e9926d0be74abc5174a478

            People

              jglick Jesse Glick
              jglick Jesse Glick
              Votes:
              1 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: