jenkinsci / docker-agent

Jenkins agent (base image) and inbound agent Docker images
https://hub.docker.com/r/jenkins/inbound-agent/
MIT License
282 stars 232 forks source link

Java reflection issue, jdk11 #392

Closed C0D3-M4513R closed 1 year ago

C0D3-M4513R commented 1 year ago

Jenkins and plugins versions report

Environment ```text Jenkins: 2.387.1 OS: Linux - 5.10.0-21-amd64 Java: 11.0.18 - Eclipse Adoptium (OpenJDK 64-Bit Server VM) --- antisamy-markup-formatter:159.v25b_c67cd35fb_ apache-httpcomponents-client-4-api:4.5.14-150.v7a_b_9d17134a_5 authentication-tokens:1.4 bitbucket:223.vd12f2bca5430 bootstrap5-api:5.2.2-1 bouncycastle-api:2.27 branch-api:2.1071.v1a_188a_562481 build-timeout:1.28 caffeine-api:2.9.3-65.v6a_47d0f4d1fe checks-api:2.0.0 cloudbees-folder:6.815.v0dd5a_cb_40e0e commons-lang3-api:3.12.0-36.vd97de6465d5b_ commons-text-api:1.10.0-36.vc008c8fcda_7b_ credentials:1224.vc23ca_a_9a_2cb_0 credentials-binding:523.vd859a_4b_122e6 display-url-api:2.3.7 docker-commons:419.v8e3cd84ef49c docker-java-api:3.2.13-68.va_875df25a_b_45 docker-plugin:1.3.0 durable-task:504.vb10d1ae5ba2f echarts-api:5.4.0-2 email-ext:2.95 font-awesome-api:6.3.0-1 git:5.0.0 git-client:4.2.0 git-parameter:0.9.18 github:1.37.0 github-api:1.303-417.ve35d9dd78549 github-branch-source:1703.vd5a_2b_29c6cdc github-pullrequest:0.5.0 gitlab-plugin:1.7.9 gradle:2.3.2 instance-identity:142.v04572ca_5b_265 ionicons-api:45.vf54fca_5d2154 jackson2-api:2.14.2-319.v37853346a_229 jakarta-activation-api:2.0.1-3 jakarta-mail-api:2.0.1-3 javadoc:226.v71211feb_e7e9 javax-activation-api:1.2.0-6 javax-mail-api:1.6.2-9 jaxb:2.3.8-1 jersey2-api:2.39.1-1 jjwt-api:0.11.5-77.v646c772fddb_0 jquery3-api:3.6.4-1 jsch:0.1.55.61.va_e9ee26616e7 junit:1189.v1b_e593637fa_e mailer:448.v5b_97805e3767 matrix-auth:3.1.6 matrix-project:785.v06b_7f47b_c631 maven-plugin:3.21 mercurial:1260.vdfb_723cdcc81 mina-sshd-api-common:2.9.2-62.v199162f0a_2f8 mina-sshd-api-core:2.9.2-62.v199162f0a_2f8 nexus-jenkins-plugin:3.16.485.ve2c3a_17ec407 okhttp-api:4.10.0-132.v7a_7b_91cef39c pipeline-build-step:487.va_823138eee8b_ pipeline-github-lib:42.v0739460cda_c4 pipeline-graph-analysis:202.va_d268e64deb_3 pipeline-groovy-lib:629.vb_5627b_ee2104 pipeline-input-step:466.v6d0a_5df34f81 pipeline-milestone-step:111.v449306f708b_7 pipeline-model-api:2.2123.va_31cb_3b_80ef8 pipeline-model-definition:2.2123.va_31cb_3b_80ef8 pipeline-model-extensions:2.2123.va_31cb_3b_80ef8 pipeline-rest-api:2.31 pipeline-stage-step:305.ve96d0205c1c6 pipeline-stage-tags-metadata:2.2123.va_31cb_3b_80ef8 pipeline-stage-view:2.31 plain-credentials:143.v1b_df8b_d3b_e48 plugin-util-api:3.1.0 resource-disposer:0.21 role-strategy:587.588.v850a_20a_30162 scm-api:631.v9143df5b_e4a_a script-security:1229.v4880b_b_e905a_6 snakeyaml-api:1.33-95.va_b_a_e3e47b_fa_4 ssh-credentials:305.v8f4381501156 ssh-slaves:2.877.v365f5eb_a_b_eec sshd:3.275.v9e17c10f2571 structs:324.va_f5d6774f3a_d timestamper:1.23 token-macro:321.vd7cc1f2a_52c8 trilead-api:2.84.v72119de229b_7 variant:59.vf075fe829ccb workflow-aggregator:596.v8c21c963d92d workflow-api:1208.v0cc7c6e0da_9e workflow-basic-steps:1010.vf7a_b_98e847c1 workflow-cps:3641.vf58904a_b_b_5d8 workflow-durable-task-step:1234.v019404b_3832a workflow-job:1284.v2fe8ed4573d4 workflow-multibranch:733.v109046189126 workflow-scm-step:408.v7d5b_135a_b_d49 workflow-step-api:639.v6eca_cd8c04a_a_ workflow-support:839.v35e2736cfd5c ws-cleanup:0.44 ```

What Operating System are you using (both controller, and any agents involved in the problem)?

Controller and Agents: Linux v2202303115941223447 5.10.0-21-amd64 #1 SMP Debian 5.10.162-1 (2023-01-21) x86_64 GNU/Linux

both the controller and agents run under docker. The controller has a tcp link to the host, to manage docker containers.

Reproduction steps

version: "3.5"

services:
  jenkins:
    image: "jenkins/jenkins:lts"
    ports:
     - "8080:8080"
    restart: "always"
    volumes:
     - "./jenkins:/var/jenkins_home"
  1. copy the jenkins compose file
  2. goto the docker systemctl file, and add `-H docker-host-adapter-ipv4:some-port
  3. install docker-plugin
  4. make a docker cloud
  5. use jenkins/agent:latest-jdk11 as the docker image
  6. use /home/jenkins/agent/ as the remote file-system-root

Expected Results

The docker agent works as expected, no errors occur, and the build starts on the newly created executer.

Actual Results

Some java reflection fails, and the build doesn't start.

Anything else?

docker log:

Server: Docker/20.10.5+dfsg1 (linux)
<===[JENKINS REMOTING CAPACITY]===>Remoting version: 3107.v665000b_51092
Launcher: DockerDelegatingComputerLauncher
Communication Protocol: Standard in/out
This is a Unix agent
Evacuated stdout
Agent successfully connected and online
ERROR: Connection terminated
java.io.EOFException
    at java.base/java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2911)
    at java.base/java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:3406)
    at java.base/java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:932)
    at java.base/java.io.ObjectInputStream.<init>(ObjectInputStream.java:375)
    at hudson.remoting.ObjectInputStreamEx.<init>(ObjectInputStreamEx.java:49)
    at hudson.remoting.Command.readFrom(Command.java:142)
    at hudson.remoting.Command.readFrom(Command.java:128)
    at hudson.remoting.AbstractSynchronousByteArrayCommandTransport.read(AbstractSynchronousByteArrayCommandTransport.java:35)
    at hudson.remoting.SynchronousCommandTransport$ReaderThread.run(SynchronousCommandTransport.java:61)
Caused: java.io.IOException: Unexpected termination of the channel
    at hudson.remoting.SynchronousCommandTransport$ReaderThread.run(SynchronousCommandTransport.java:75)

jenkins log:

Image of jenkins/agent:latest-jdk11 provisioning successfully completed. We have now 2 computer(s)

Mar 25, 2023 10:59:26 PM INFO io.jenkins.docker.client.DockerMultiplexedInputStream readInternal

stderr from docker-0001abdx4zvhw (f4db6b2356e7a1f252896b4d42d479b0e712769057d719154da5009c3463fd74): Mar 25, 2023 10:59:26 PM org.jenkinsci.remoting.engine.WorkDirManager setupLogging
INFO: Using /home/jenkins/agent/agent.log as an agent error log destination; output log will not be generated

Mar 25, 2023 10:59:26 PM INFO io.jenkins.docker.client.DockerMultiplexedInputStream readInternal

stderr from docker-0001abdx4zvhw (f4db6b2356e7a1f252896b4d42d479b0e712769057d719154da5009c3463fd74): channel started

Mar 25, 2023 10:59:27 PM INFO io.jenkins.docker.client.DockerMultiplexedInputStream readInternal

stderr from docker-0001abdx4zvhw (f4db6b2356e7a1f252896b4d42d479b0e712769057d719154da5009c3463fd74): WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by jenkins.slaves.StandardOutputSwapper$ChannelSwapper to constructor java.io.FileDescriptor(int)
WARNING: Please consider reporting this to the maintainers of jenkins.slaves.StandardOutputSwapper$ChannelSwapper
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release

Mar 25, 2023 10:59:35 PM INFO hudson.remoting.SynchronousCommandTransport$ReaderThread run

I/O error in channel docker-0001abdx4zvhw
java.io.EOFException
    at java.base/java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2911)
    at java.base/java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:3406)
    at java.base/java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:932)
    at java.base/java.io.ObjectInputStream.<init>(ObjectInputStream.java:375)
    at hudson.remoting.ObjectInputStreamEx.<init>(ObjectInputStreamEx.java:49)
    at hudson.remoting.Command.readFrom(Command.java:142)
    at hudson.remoting.Command.readFrom(Command.java:128)
    at hudson.remoting.AbstractSynchronousByteArrayCommandTransport.read(AbstractSynchronousByteArrayCommandTransport.java:35)
    at hudson.remoting.SynchronousCommandTransport$ReaderThread.run(SynchronousCommandTransport.java:61)
Caused: java.io.IOException: Unexpected termination of the channel
    at hudson.remoting.SynchronousCommandTransport$ReaderThread.run(SynchronousCommandTransport.java:75)

Mar 25, 2023 10:59:35 PM INFO io.jenkins.docker.DockerTransientNode$1 println

Stopped container 'f4db6b2356e7a1f252896b4d42d479b0e712769057d719154da5009c3463fd74' for node 'docker-0001abdx4zvhw'.

Mar 25, 2023 10:59:35 PM INFO io.jenkins.docker.DockerTransientNode$1 println

Removed container 'f4db6b2356e7a1f252896b4d42d479b0e712769057d719154da5009c3463fd74' for node 'docker-0001abdx4zvhw'.
C0D3-M4513R commented 1 year ago

I think this was just a git branch misconfiguration.... master is default instead of main

But the errors are not clear at all. Can you improve those errors at all?

C0D3-M4513R commented 1 year ago

Errors still appear, even after I fixed the github branch name. I'm doing maven builds. The parsing of the pom passes, but then actual building fails.

Just to be clear, this is instead of the docker log in the first post: the jenkins log is still mostly the same (except for the values that change from run to run)

Started by upstream project "[config-util](http://c.c0d3m4513r.com:8080/job/config-util/)" build number [17](http://c.c0d3m4513r.com:8080/job/config-util/17)
originally caused by:
 Started by user [admin](http://c.c0d3m4513r.com:8080/user/admin)
Running as SYSTEM
Building remotely on [docker-0001bzsmsed96 on docker](http://c.c0d3m4513r.com:8080/computer/docker-0001bzsmsed96)FATAL: null
java.lang.NullPointerException
    at hudson.maven.MavenBuild$MavenBuildExecution.decideWorkspace(MavenBuild.java:839)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:511)
    at hudson.model.Run.execute(Run.java:1900)
    at hudson.maven.MavenBuild.run(MavenBuild.java:280)
    at hudson.model.ResourceController.execute(ResourceController.java:101)
    at hudson.model.Executor.run(Executor.java:442)
Finished: FAILURE
C0D3-M4513R commented 1 year ago

issue was probably due to having the project set to maven, and having parallel builds enabled.

Switched to a pipeline project and everything works now.