-
Bug
-
Resolution: Unresolved
-
Major
-
HideJenkins:
- Ubuntu linux box running openjdk version "1.8.0_45-internal"
- Core 2.127
- Experimental UC plugins
- Declarative with restartable and sequential, at commit f5572354
Remote build agent:
- Ubuntu linux box running openjdk version "1.8.0_45-internal". They're actually based on the same AMIShowJenkins: - Ubuntu linux box running openjdk version "1.8.0_45-internal" - Core 2.127 - Experimental UC plugins - Declarative with restartable and sequential, at commit f5572354 Remote build agent: - Ubuntu linux box running openjdk version "1.8.0_45-internal". They're actually based on the same AMI
-
Powered by SuggestiMate
Summary
Given a Declarative pipeline with a stage set to run on a node matching a particular label (in my case linux, if there is node connected, the Pipeline will pause as expected. Adding this label to a node should cause the job to proceed, but usually, the pipeline remains "stuck."
I don't know if this is specific to declarative, so I'm happy to move it to some other component.
Frequency of occurrence:
Maybe 50% of the time. There's no pattern apparent yet as to when it happens, or how to reliably trigger it.
Steps to recreate
1. Set up a remote build agent to have a label of other.
2. Create a Pipeline job, as in the below block. Note that the whole top level agent setting is for any, but there's a stage, called needs-a-labeled-agent, which relies on an agent matching the label linux:
pipeline { agent any stages { stage('first-stage') { steps { echo "Hello from Declarative." sh "mvn -version" sh "for i in `seq 1 5`; do cat /dev/urandom | env LC_CTYPE=c tr -dc \'[:alpha:]\' | head -c 100; done" } } stage ('needs-a-labeled-agent') { agent { label ("linux") } steps { sh "whoami" } } stage ('runs-on-any') { steps { echo "If we see this, we made it past the agent label thing" } } } // end stages post { always { echo "ALWAYS --> Runs all the time." deleteDir() } success { echo "SUCCESS --> Whatever we did, it worked. Yay!" } failure { echo "FAILURE --> Failed. Womp womp." } } }
3. Build this pipeline. It will get stuck at the needs-a-labeled-agent stage, which is expected, because we don't have an agent with that label.
4. Go to the Configure page for your remote agent, and replace the other label with linux. It'll look like this when done:
5. The pipeline build does not proceed. My expectation was that it would proceed - and I've seen it do so occasionally. But more frequently, it does not proceed.
6. Hover over the build queue, and you'll see a tooltip stating "Waiting for the next available executor on agent-69. Waiting for 10 minutes."
7. This can be recreated with a multibranch project as well - but the above described test case is way simpler to set up.
- screenshot-1.png
- 438 kB
- screenshot-10.png
- 546 kB
- screenshot-2.png
- 438 kB
- screenshot-3.png
- 449 kB
- screenshot-4.png
- 866 kB
- screenshot-5.png
- 440 kB
- screenshot-6.png
- 531 kB
- screenshot-7.png
- 523 kB
- screenshot-8.png
- 461 kB
- screenshot-9.png
- 881 kB
[JENKINS-51891] Pipelines which need a node with a specific label do not proceed after adding label to a node
I tried a Pause/Resume cycle on my most recent recreate. No effect - job still stuck.
Here's threadDump output from same:
Thread #6 at DSL.node(waiting for part of recreate-the-agent-label-thing #5 to be scheduled; blocked: Waiting for next available executor on ‘agent-69’) at org.jenkinsci.plugins.pipeline.modeldefinition.agent.impl.LabelScript.run(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/agent/impl/LabelScript.groovy:43) at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.inDeclarativeAgent(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:564) at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.evaluateStage(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:277) at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.stageInput(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:343) at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.stageInput(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:342) at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.evaluateStage(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:251) at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.inWrappers(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:588) at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.inWrappers(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:587) at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.evaluateStage(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:236) at DSL.stage(Native Method) at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.evaluateStage(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:225) at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.evaluateSequentialStages(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:165) at com.cloudbees.groovy.cps.CpsDefaultGroovyMethods.each(CpsDefaultGroovyMethods:2030) at com.cloudbees.groovy.cps.CpsDefaultGroovyMethods.each(CpsDefaultGroovyMethods:2015) at com.cloudbees.groovy.cps.CpsDefaultGroovyMethods.each(CpsDefaultGroovyMethods:2056) at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.evaluateSequentialStages(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:150) at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.call(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:78) at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.toolsBlock(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:523) at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.toolsBlock(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:522) at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.call(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:77) at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.inWrappers(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:588) at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.inWrappers(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:587) at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.call(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:76) at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.withEnvBlock(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:422) at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.withEnvBlock(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:421) at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.call(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:75) at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.withCredentialsBlock(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:460) at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.withCredentialsBlock(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:459) at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.call(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:74) at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.inDeclarativeAgent(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:565) at org.jenkinsci.plugins.pipeline.modeldefinition.agent.impl.AnyScript.run(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/agent/impl/AnyScript.groovy:43) at org.jenkinsci.plugins.pipeline.modeldefinition.agent.CheckoutScript.checkoutAndRun(jar:file:/var/lib/jenkins/plugins/pipeline-model-extensions/WEB-INF/lib/pipeline-model-extensions.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/agent/CheckoutScript.groovy:66) at org.jenkinsci.plugins.pipeline.modeldefinition.agent.CheckoutScript.doCheckout(jar:file:/var/lib/jenkins/plugins/pipeline-model-extensions/WEB-INF/lib/pipeline-model-extensions.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/agent/CheckoutScript.groovy:42) at org.jenkinsci.plugins.pipeline.modeldefinition.agent.impl.LabelScript.run(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/agent/impl/LabelScript.groovy:44) at DSL.node(running on agent-69) at org.jenkinsci.plugins.pipeline.modeldefinition.agent.impl.LabelScript.run(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/agent/impl/LabelScript.groovy:43) at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.inDeclarativeAgent(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:564) at org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.call(jar:file:/var/lib/jenkins/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:73) at WorkflowScript.run(WorkflowScript:1)
Pause/resume likely irrelevant.
Sounds like either Declarative is calling the node step with an inappropriate argument (which would be visible in workflow/NNN.xml metadata); or there is a bug in Queue in core. Depends on whether or not an analogous bug could be reproduced with Scripted.
I just recreated it with Scripted. Not every time, but I've seen it once so far.
1. Set the agent label to something
2. Run this Pipeline:
node { stage ("A stage") { sh "whoami" sh "ls -alh" sh "netstat -a" } node ("linux") { stage ("linux inside of blank") { sh "whoami" sh "ls -alh" sh "netstat -a" } } } // ends outer node block
3. Wait for the job to get stuck because there are no nodes with the label linux
4. Change the label of the agent from something to linux, and Save.
5. The job will remain stuck, and the queue will report that we're waiting for the next executor.
That message "waiting for the next available executor" gets my attention. The agent only has one (1) executor:
I'm pretty sure this is the default upon creation of the new node. I wonder if the problem will no longer be reproducible if I bump this to >1 executor.
Interesting. Given this "stuck" job, the moment I bumped the number of executors on agent-69 from 1 to 2, the job proceeded.
Thanks for moving this to the proper component. Was looking for someplace to put it since it's not limited to declarative.
I set up a logger on my instance. I'm logging org.jenkinsci.plugins.workflow at a level of ALL. Unfortunately it's wrapping on me, but I did get the output from a successful recreate.
For context, 172.18.64.72 is the remote agent.
Computer.threadPoolForRemoting [#197] already finished, no need to interrupt Jun 13, 2018 7:26:10 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Might interrupt jenkins.util.Timer [#9] after 100 MILLISECONDS Jun 13, 2018 7:26:10 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout completed jenkins.util.Timer [#9] Jun 13, 2018 7:26:10 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout jenkins.util.Timer [#9] already finished, no need to interrupt Jun 13, 2018 7:26:15 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Might interrupt jenkins.util.Timer [#4] after 100 MILLISECONDS Jun 13, 2018 7:26:15 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout completed jenkins.util.Timer [#4] Jun 13, 2018 7:26:15 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout jenkins.util.Timer [#4] already finished, no need to interrupt Jun 13, 2018 7:26:20 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Might interrupt jenkins.util.Timer [#7] after 100 MILLISECONDS Jun 13, 2018 7:26:20 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout completed jenkins.util.Timer [#7] Jun 13, 2018 7:26:20 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout jenkins.util.Timer [#7] already finished, no need to interrupt Jun 13, 2018 7:26:21 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Might interrupt Handling POST /computer/agent-69/ajaxExecutors from 172.18.64.72 : RequestHandlerThread[#15] Computer/ajaxExecutors.jelly ExecutorStepExecution/PlaceholderTask/PlaceholderExecutable/executorCell.jelly after 100 MILLISECONDS Jun 13, 2018 7:26:21 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout completed Handling POST /computer/agent-69/ajaxExecutors from 172.18.64.72 : RequestHandlerThread[#15] Computer/ajaxExecutors.jelly ExecutorStepExecution/PlaceholderTask/PlaceholderExecutable/executorCell.jelly Jun 13, 2018 7:26:21 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout RequestHandlerThread[#15] already finished, no need to interrupt Jun 13, 2018 7:26:24 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Might interrupt Handling GET /computer/agent-69/configure from 172.18.64.72 : RequestHandlerThread[#16] Computer/configure.jelly Computer/sidepanel.jelly ExecutorStepExecution/PlaceholderTask/PlaceholderExecutable/executorCell.jelly after 100 MILLISECONDS Jun 13, 2018 7:26:24 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout completed Handling GET /computer/agent-69/configure from 172.18.64.72 : RequestHandlerThread[#16] Computer/configure.jelly Computer/sidepanel.jelly ExecutorStepExecution/PlaceholderTask/PlaceholderExecutable/executorCell.jelly Jun 13, 2018 7:26:25 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout RequestHandlerThread[#16] already finished, no need to interrupt Jun 13, 2018 7:26:25 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Might interrupt jenkins.util.Timer [#1] after 100 MILLISECONDS Jun 13, 2018 7:26:25 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout completed jenkins.util.Timer [#1] Jun 13, 2018 7:26:25 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout jenkins.util.Timer [#1] already finished, no need to interrupt Jun 13, 2018 7:26:30 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Might interrupt Handling POST /computer/agent-69/ajaxExecutors from 172.18.64.72 : RequestHandlerThread[#16] Computer/ajaxExecutors.jelly ExecutorStepExecution/PlaceholderTask/PlaceholderExecutable/executorCell.jelly after 100 MILLISECONDS Jun 13, 2018 7:26:30 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout completed Handling POST /computer/agent-69/ajaxExecutors from 172.18.64.72 : RequestHandlerThread[#16] Computer/ajaxExecutors.jelly ExecutorStepExecution/PlaceholderTask/PlaceholderExecutable/executorCell.jelly Jun 13, 2018 7:26:30 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout RequestHandlerThread[#16] already finished, no need to interrupt Jun 13, 2018 7:26:30 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Might interrupt jenkins.util.Timer [#5] after 100 MILLISECONDS Jun 13, 2018 7:26:30 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout completed jenkins.util.Timer [#5] Jun 13, 2018 7:26:30 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout jenkins.util.Timer [#5] already finished, no need to interrupt Jun 13, 2018 7:26:34 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Might interrupt AtmostOneTaskExecutor[Periodic Jenkins queue maintenance] [#69] after 100 MILLISECONDS Jun 13, 2018 7:26:34 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout completed AtmostOneTaskExecutor[Periodic Jenkins queue maintenance] [#69] Jun 13, 2018 7:26:34 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Might interrupt AtmostOneTaskExecutor[Periodic Jenkins queue maintenance] [#70] after 100 MILLISECONDS Jun 13, 2018 7:26:34 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout completed AtmostOneTaskExecutor[Periodic Jenkins queue maintenance] [#70] Jun 13, 2018 7:26:34 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Might interrupt Handling GET /computer/agent-69/ from 172.18.64.72 : RequestHandlerThread[#15] Computer/index.jelly Computer/sidepanel.jelly ExecutorStepExecution/PlaceholderTask/PlaceholderExecutable/executorCell.jelly after 100 MILLISECONDS Jun 13, 2018 7:26:34 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout completed Handling GET /computer/agent-69/ from 172.18.64.72 : RequestHandlerThread[#15] Computer/index.jelly Computer/sidepanel.jelly ExecutorStepExecution/PlaceholderTask/PlaceholderExecutable/executorCell.jelly Jun 13, 2018 7:26:34 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout AtmostOneTaskExecutor[Periodic Jenkins queue maintenance] [#69] already finished, no need to interrupt Jun 13, 2018 7:26:34 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout AtmostOneTaskExecutor[Periodic Jenkins queue maintenance] [#70] already finished, no need to interrupt Jun 13, 2018 7:26:34 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout RequestHandlerThread[#15] already finished, no need to interrupt Jun 13, 2018 7:26:35 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Might interrupt jenkins.util.Timer [#9] after 100 MILLISECONDS Jun 13, 2018 7:26:35 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout completed jenkins.util.Timer [#9] Jun 13, 2018 7:26:35 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout jenkins.util.Timer [#9] already finished, no need to interrupt Jun 13, 2018 7:26:39 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Might interrupt Handling POST /computer/agent-69/ajaxExecutors from 172.18.64.72 : RequestHandlerThread[#15] Computer/ajaxExecutors.jelly ExecutorStepExecution/PlaceholderTask/PlaceholderExecutable/executorCell.jelly after 100 MILLISECONDS Jun 13, 2018 7:26:39 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout completed Handling POST /computer/agent-69/ajaxExecutors from 172.18.64.72 : RequestHandlerThread[#15] Computer/ajaxExecutors.jelly ExecutorStepExecution/PlaceholderTask/PlaceholderExecutable/executorCell.jelly Jun 13, 2018 7:26:39 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout RequestHandlerThread[#15] already finished, no need to interrupt Jun 13, 2018 7:26:40 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Might interrupt jenkins.util.Timer [#1] after 100 MILLISECONDS Jun 13, 2018 7:26:40 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout completed jenkins.util.Timer [#1] Jun 13, 2018 7:26:40 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout jenkins.util.Timer [#1] already finished, no need to interrupt Jun 13, 2018 7:26:45 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Might interrupt jenkins.util.Timer [#5] after 100 MILLISECONDS Jun 13, 2018 7:26:45 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout completed jenkins.util.Timer [#5] Jun 13, 2018 7:26:45 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout jenkins.util.Timer [#5] already finished, no need to interrupt Jun 13, 2018 7:26:50 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Might interrupt jenkins.util.Timer [#9] after 100 MILLISECONDS Jun 13, 2018 7:26:50 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout completed jenkins.util.Timer [#9] Jun 13, 2018 7:26:50 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout jenkins.util.Timer [#9] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#197] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#209] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#197] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#209] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#197] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#209] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#197] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#209] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#197] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#209] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#197] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#209] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#197] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#209] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#197] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#209] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#197] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#209] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#197] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#209] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#197] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#209] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#197] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#209] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#197] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#199] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#197] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#197] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#205] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#197] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#205] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#197] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#205] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#210] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#205] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#210] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#197] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#210] already finished, no need to interrupt Jun 13, 2018 7:26:54 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#201] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#210] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#201] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#210] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#201] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#210] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#201] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#210] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#201] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#210] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#201] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#210] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#201] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#210] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#201] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#210] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#201] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#210] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#201] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#210] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#201] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#210] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#205] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#210] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#197] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#205] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#201] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#205] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#201] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#205] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#201] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#205] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#201] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#205] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#201] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#205] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#201] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#205] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#201] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#205] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#201] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#205] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#201] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#205] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#205] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#201] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#205] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#201] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#201] already finished, no need to interrupt Jun 13, 2018 7:26:55 PM FINER org.jenkinsci.plugins.workflow.support.concurrent.Timeout Computer.threadPoolForRemoting [#205] already finished, no need to interrupt
Uh, not a bug, You have an agent with one executor. You run a script with nested node blocks (a terrible idea but technically legal). The first block grabs the agent executor slot (you have not told it to use master, so it may or may not); then the second block cannot run because there are no more executors.
At most I would consider this a UX issue in Declarative: it should either prohibit use of a stage with an agent when there is an overall agent, or issue some sort of warning, since it is not what you want.
For Scripted users we trust that they have a reason for what they are doing, and just do what they told us to. For Declarative we impose a mental model of how builds should run, and this cannot be right.
This approach that jglick has suggested is the one I'm going to take. Let's see if we can get Declarative to prohibit the use of nested agents, along with a human-readable error message explaining the user's mistake.
Looks like it will be tricky to check for nesting inside of ModelParser. Maybe somewhere in ModelValidatorImpl or elsewhere in the validator stuff?
I don't think the stage-vs-top-level agent would make a difference, though I guess there could theoretically be something about node that results in different behavior in this regard when nested within another node call?