-
Bug
-
Resolution: Unresolved
-
Major
-
Jenkins: 2.277.2
Jenkins JVM: Oracle OpenJDK 64-Bit Server VM 1.8.0_282 (25.282-b08)
OS: Linux version 4.4.0-210-generic (buildd@lgw01-amd64-009) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12) )
---
ansicolor:1.0.0
momentjs:1.1.1
saferestart:0.3
jdk-tool:1.5
docker-workflow:1.26
junit:1.50
script-security:1.77
github-api:1.123
antisamy-markup-formatter:2.1
pipeline-model-definition:1.8.5
github:1.33.1
git:4.7.2
javadoc:1.6
workflow-multibranch:2.24
workflow-basic-steps:2.23
ssh-credentials:1.18.1
workflow-support:3.8
ant:1.11
pipeline-model-api:1.8.5
conditional-buildstep:1.4.1
git-client:3.7.2
bouncycastle-api:2.20
cloudbees-folder:6.15
openstack-cloud:2.58
postbuild-task:1.9
ws-cleanup:0.39
sidebar-link:1.12.0
leastload:3.0.0
lockable-resources:2.11
build-name-setter:2.2.0
durable-task:1.37
multiple-scms:0.8
pipeline-input-step:2.12
cloud-stats:0.27
powershell:1.5
workflow-step-api:2.23
publish-over:0.22
handlebars:3.0.8
cloudbees-disk-usage-simple:0.10
matrix-auth:2.6.7
popper-api:1.16.1-2
pipeline-utility-steps:2.8.0
build-timeout:1.20
run-condition:1.5
docker-plugin:1.2.2
apache-httpcomponents-client-4-api:4.5.13-1.0
plain-credentials:1.7
jobConfigHistory:2.27
workflow-cps-global-lib:2.20
envinject:2.4.0
build-flow-plugin:0.20
display-url-api:2.3.5
authentication-tokens:1.4
simple-theme-plugin:0.6
maven-plugin:3.12
workflow-job:2.41
pipeline-stage-view:2.19
slack:2.48
workflow-scm-step:2.13
snakeyaml-api:1.29.1
job-import-plugin:3.4
appscan:1.0.7
teamconcert:1.1.9.5-SNAPSHOT (private-7318df45-jenkins)
workflow-api:2.45
groovy:2.4
command-launcher:1.6
credentials:2.5
next-build-number:1.6
matrix-project:1.18
token-macro:2.15
role-strategy:3.1.1
gradle:1.36
log-parser:2.1
pipeline-stage-step:2.5
label-linked-jobs:6.0.1
jackson2-api:2.12.3
extended-read-permission:3.2
ibm-application-security:1.3.2
bootstrap5-api:5.0.1-2
jsch:0.1.55.2
docker-commons:1.17
mailer:1.34
font-awesome-api:5.15.3-3
pipeline-graph-analysis:1.11
rebuild:1.32
caffeine-api:2.9.1-23.v51c4e2c879c8
checks-api:1.7.0
Parameterized-Remote-Trigger:3.1.5.1
okhttp-api:3.14.9
ivy:2.1
groovy-label-assignment:1.2.0
credentials-binding:1.25
windows-slaves:1.8
ssh-slaves:1.31.5
scm-api:2.6.4
artifactory:3.11.4
publish-over-ssh:1.22
echarts-api:5.1.2-2
test-results-analyzer:0.3.5
trilead-api:1.0.13
pipeline-milestone-step:1.3.2
jquery3-api:3.6.0-1
ace-editor:1.1
ssh-agent:1.22
timestamper:1.13
workflow-aggregator:2.6
envinject-api:1.7
parameterized-trigger:2.41
workflow-durable-task-step:2.39
pam-auth:1.6
pipeline-stage-tags-metadata:1.8.5
external-monitor-job:1.4
purge-build-queue-plugin:1.0
saml:2.0.6
popper2-api:2.5.4-2
bootstrap4-api:4.6.0-3
workflow-cps:2.92
pipeline-rest-api:2.19
config-file-provider:3.8.0
ldap:2.7
pipeline-build-step:2.13
docker-java-api:3.1.5.2
pipeline-model-extensions:1.8.5
plugin-util-api:2.3.0
structs:1.23
git-server:1.9
branch-api:2.6.4
resource-disposer:0.16Jenkins: 2.277.2 Jenkins JVM: Oracle OpenJDK 64-Bit Server VM 1.8.0_282 (25.282-b08) OS: Linux version 4.4.0-210-generic ( buildd@lgw01-amd64-009 ) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12) ) --- ansicolor:1.0.0 momentjs:1.1.1 saferestart:0.3 jdk-tool:1.5 docker-workflow:1.26 junit:1.50 script-security:1.77 github-api:1.123 antisamy-markup-formatter:2.1 pipeline-model-definition:1.8.5 github:1.33.1 git:4.7.2 javadoc:1.6 workflow-multibranch:2.24 workflow-basic-steps:2.23 ssh-credentials:1.18.1 workflow-support:3.8 ant:1.11 pipeline-model-api:1.8.5 conditional-buildstep:1.4.1 git-client:3.7.2 bouncycastle-api:2.20 cloudbees-folder:6.15 openstack-cloud:2.58 postbuild-task:1.9 ws-cleanup:0.39 sidebar-link:1.12.0 leastload:3.0.0 lockable-resources:2.11 build-name-setter:2.2.0 durable-task:1.37 multiple-scms:0.8 pipeline-input-step:2.12 cloud-stats:0.27 powershell:1.5 workflow-step-api:2.23 publish-over:0.22 handlebars:3.0.8 cloudbees-disk-usage-simple:0.10 matrix-auth:2.6.7 popper-api:1.16.1-2 pipeline-utility-steps:2.8.0 build-timeout:1.20 run-condition:1.5 docker-plugin:1.2.2 apache-httpcomponents-client-4-api:4.5.13-1.0 plain-credentials:1.7 jobConfigHistory:2.27 workflow-cps-global-lib:2.20 envinject:2.4.0 build-flow-plugin:0.20 display-url-api:2.3.5 authentication-tokens:1.4 simple-theme-plugin:0.6 maven-plugin:3.12 workflow-job:2.41 pipeline-stage-view:2.19 slack:2.48 workflow-scm-step:2.13 snakeyaml-api:1.29.1 job-import-plugin:3.4 appscan:1.0.7 teamconcert:1.1.9.5-SNAPSHOT (private-7318df45-jenkins) workflow-api:2.45 groovy:2.4 command-launcher:1.6 credentials:2.5 next-build-number:1.6 matrix-project:1.18 token-macro:2.15 role-strategy:3.1.1 gradle:1.36 log-parser:2.1 pipeline-stage-step:2.5 label-linked-jobs:6.0.1 jackson2-api:2.12.3 extended-read-permission:3.2 ibm-application-security:1.3.2 bootstrap5-api:5.0.1-2 jsch:0.1.55.2 docker-commons:1.17 mailer:1.34 font-awesome-api:5.15.3-3 pipeline-graph-analysis:1.11 rebuild:1.32 caffeine-api:2.9.1-23.v51c4e2c879c8 checks-api:1.7.0 Parameterized-Remote-Trigger:3.1.5.1 okhttp-api:3.14.9 ivy:2.1 groovy-label-assignment:1.2.0 credentials-binding:1.25 windows-slaves:1.8 ssh-slaves:1.31.5 scm-api:2.6.4 artifactory:3.11.4 publish-over-ssh:1.22 echarts-api:5.1.2-2 test-results-analyzer:0.3.5 trilead-api:1.0.13 pipeline-milestone-step:1.3.2 jquery3-api:3.6.0-1 ace-editor:1.1 ssh-agent:1.22 timestamper:1.13 workflow-aggregator:2.6 envinject-api:1.7 parameterized-trigger:2.41 workflow-durable-task-step:2.39 pam-auth:1.6 pipeline-stage-tags-metadata:1.8.5 external-monitor-job:1.4 purge-build-queue-plugin:1.0 saml:2.0.6 popper2-api:2.5.4-2 bootstrap4-api:4.6.0-3 workflow-cps:2.92 pipeline-rest-api:2.19 config-file-provider:3.8.0 ldap:2.7 pipeline-build-step:2.13 docker-java-api:3.1.5.2 pipeline-model-extensions:1.8.5 plugin-util-api:2.3.0 structs:1.23 git-server:1.9 branch-api:2.6.4 resource-disposer:0.16
We use the Parameterized Trigger plugin to launch a downstream Pipeline job (child) from an upstream Freestyle job (parent). The parent is configured to launch the child on the same single-executor node as the parent. Intermittently, the parent will hang waiting for the child to return control to it after the child completes.
If we access /threadDump for our Jenkins server while a hang is in progress, we see a stack trace like the following for the hanging executor thread:
"Executor #0 for iibdev-x-rhel-hur-fyre-discard-87671 : executing ib000_Linux_PPCLE_Packager #2489" Id=101251 Group=main WAITING on hudson.model.queue.FutureImpl@278f4262 at java.lang.Object.wait(Native Method) - waiting on hudson.model.queue.FutureImpl@278f4262 at java.lang.Object.wait(Object.java:502) at hudson.remoting.AsyncFutureImpl.get(AsyncFutureImpl.java:79) at hudson.plugins.parameterizedtrigger.TriggerBuilder.perform(TriggerBuilder.java:155) at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20) at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:803) at hudson.model.Build$BuildExecution.build(Build.java:197) at hudson.model.Build$BuildExecution.doRun(Build.java:163) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:513) at hudson.model.Run.execute(Run.java:1907) at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429)
The problem seems to be a wait() call that never returns from AsyncFutureImpl.java:79 (Jenkins core) to TriggerBuilder.java:155 (Parameterized Trigger plugin).
Bizarrely, the hanging continues even after the node running the parent has gone offline:
The problem has been reproduced on various Linux and Windows nodes: Red Hat Enterprise Linux 7.9 (x86_64, s390x, ppc64le) and Windows 2012 R2 (x86_64).
The problem is very intermittent and difficult to reproduce - it has taken several weeks' worth of jobs running every minute of the day to reproduce the issue a handful of times. The problem has been reproduced with the following job pairing (assume all configuration options except those mentioned below left as the default):
- Parent [Freestyle]:
- Discard old builds → Max # of builds to keep: 30
- Restrict where this project can be run: iibdev-x-rhel-hur-fyre-discard-87671
- Build periodically: * * * * *
- Build step: Trigger/call builds on other projects: Child
- Block until the triggered projects finish their builds
- Build on the same node
- Build step → Execute shell:
echo "Got past downstream"
- Child [Pipeline]:
- Do not allow the pipeline to resume if the master restarts
- Disable Rebuilding for this job
- Pipeline script:
println("foobar")
- Use Groovy Sandbox