As part of running Jenkins under Java 17 (T359795) we need to verify the Jenkins Gearman plugin ( https://github.com/jenkinsci/gearman-plugin/ ) works with it as well as the the Gearman protocol library it depends on ( https://gerrit.wikimedia.org/g/integration/gearman-java ). Last time I have discovered the 10+ years old code was aiming at Java 5 and ended up hitting a breaking change introduced in Java 11 (JDK-8200458 / T271683).
Description
Details
| Status | Subtype | Assigned | Task | ||
|---|---|---|---|---|---|
| Resolved | • jnuche | T379059 Upgrade Jenkins instances to 2.479.1 | |||
| Resolved | Dzahn | T359795 Switch Jenkins instances from Java 11 to Java 17 | |||
| Resolved | hashar | T373351 Verify Jenkins Gearman plugin works with Java 17 | |||
| Resolved | hashar | T373352 Archiva release repository yields 404 for release repository breaking builds |
Event Timeline
The Jenkins plugin is maintained on the upstream GitHub organization, I have sent a patch to have CI test it with Java 17 instead of Java 8 https://github.com/jenkinsci/gearman-plugin/commit/41b31b5f2bc86a2133bf8021cb3cb4db982995e8 :
buildPlugin( platforms: ['linux'], - jdkVersions: [8, 11], + jdkVersions: [11, 17], )
Unfortunately it failed at https://github.com/jenkinsci/gearman-plugin/runs/29251175597 due to:
[2024-08-26T12:16:51.377Z] [WARNING] The POM for org.wikimedia.gearman:gearman-java:jar:0.10 is missing, no dependency information available
[2024-08-26T12:16:40.634Z] + mvn --batch-mode --show-version --errors --no-transfer-progress --update-snapshots -Dmaven.repo.local=/home/jenkins/agent/workspace/earman-plugin_jenkinsfile-java17@tmp/m2repo -Dmaven.test.failure.ignore -Dspotbugs.failOnError=false -Dcheckstyle.failOnViolation=false -Dcheckstyle.failsOnError=false -Dpmd.failOnViolation=false -Penable-jacoco clean install [2024-08-26T12:16:41.437Z] -XX:G1ConcRefinementThreads=4 -XX:GCDrainStackTargetSize=64 -XX:InitialHeapSize=261822272 -XX:MaxHeapSize=4189156352 -XX:+PrintCommandLineFlags -XX:ReservedCodeCacheSize=251658240 -XX:+SegmentedCodeCache -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseG1GC [2024-08-26T12:16:42.842Z] Apache Maven 3.9.9 (8e8579a9e76f7d015ee5ec7bfcdc97d260186937) [2024-08-26T12:16:42.842Z] Maven home: /home/jenkins/agent/tools/hudson.tasks.Maven_MavenInstallation/mvn [2024-08-26T12:16:42.843Z] Java version: 11.0.24, vendor: Eclipse Adoptium, runtime: /opt/jdk-11 [2024-08-26T12:16:42.843Z] Default locale: en_US, platform encoding: UTF-8 [2024-08-26T12:16:42.844Z] OS name: "linux", version: "6.5.0-1025-azure", arch: "amd64", family: "unix" [2024-08-26T12:16:44.348Z] [INFO] Error stacktraces are turned on. [2024-08-26T12:16:44.349Z] [INFO] Scanning for projects... [2024-08-26T12:16:48.963Z] [INFO] [2024-08-26T12:16:48.963Z] [INFO] ---------------< org.jenkins-ci.plugins:gearman-plugin >---------------- [2024-08-26T12:16:48.964Z] [INFO] Building Gearman Plugin 0.6.1-SNAPSHOT [2024-08-26T12:16:48.964Z] [INFO] from pom.xml [2024-08-26T12:16:48.964Z] [INFO] --------------------------------[ hpi ]--------------------------------- [2024-08-26T12:16:49.069Z] [WARNING] Parameter 'showDeprecation' is unknown for plugin 'maven-hpi-plugin:3.17:validate (default-validate)' [2024-08-26T12:16:49.069Z] [WARNING] Parameter 'showDeprecation' is unknown for plugin 'maven-hpi-plugin:3.17:validate-hpi (default-validate-hpi)' [2024-08-26T12:16:49.070Z] [WARNING] Parameter 'showDeprecation' is unknown for plugin 'maven-hpi-plugin:3.17:insert-test (default-insert-test)' [2024-08-26T12:16:49.070Z] [WARNING] Parameter 'showDeprecation' is unknown for plugin 'maven-hpi-plugin:3.17:test-hpl (default-test-hpl)' [2024-08-26T12:16:49.071Z] [WARNING] Parameter 'showDeprecation' is unknown for plugin 'maven-hpi-plugin:3.17:resolve-test-dependencies (default-resolve-test-dependencies)' [2024-08-26T12:16:49.171Z] [WARNING] Parameter 'showDeprecation' is unknown for plugin 'maven-hpi-plugin:3.17:hpi (default-hpi)' [2024-08-26T12:16:51.377Z] [WARNING] The POM for org.wikimedia.gearman:gearman-java:jar:0.10 is missing, no dependency information available [2024-08-26T12:17:02.502Z] [INFO] ------------------------------------------------------------------------ [2024-08-26T12:17:02.502Z] [INFO] BUILD FAILURE [2024-08-26T12:17:02.502Z] [INFO] ------------------------------------------------------------------------ [2024-08-26T12:17:02.503Z] [INFO] Total time: 18.180 s [2024-08-26T12:17:02.503Z] [INFO] Finished at: 2024-08-26T12:17:02Z [2024-08-26T12:17:02.503Z] [INFO] ------------------------------------------------------------------------ [2024-08-26T12:17:02.504Z] [ERROR] Failed to execute goal on project gearman-plugin: Could not resolve dependencies for project org.jenkins-ci.plugins:gearman-plugin:hpi:0.6.1-SNAPSHOT [2024-08-26T12:17:02.504Z] [ERROR] dependency: org.wikimedia.gearman:gearman-java:jar:0.10 (compile) [2024-08-26T12:17:02.504Z] [ERROR] Could not find artifact org.wikimedia.gearman:gearman-java:jar:0.10 in azure-internal (http://artifact-caching-proxy.privatelink.azurecr.io:8080/) [2024-08-26T12:17:02.505Z] [ERROR] -> [Help 1] [2024-08-26T12:17:02.505Z] org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal on project gearman-plugin: Could not resolve dependencies for project org.jenkins-ci.plugins:gearman-plugin:hpi:0.6.1-SNAPSHOT [2024-08-26T12:17:02.505Z] dependency: org.wikimedia.gearman:gearman-java:jar:0.10 (compile) [2024-08-26T12:17:02.506Z] Could not find artifact org.wikimedia.gearman:gearman-java:jar:0.10 in azure-internal (http://artifact-caching-proxy.privatelink.azurecr.io:8080/) [2024-08-26T12:17:02.506Z] [2024-08-26T12:17:02.506Z] at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies (LifecycleDependencyResolver.java:243) [2024-08-26T12:17:02.506Z] at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies (LifecycleDependencyResolver.java:136) [2024-08-26T12:17:02.507Z] at org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved (MojoExecutor.java:355) [2024-08-26T12:17:02.507Z] at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:313) [2024-08-26T12:17:02.507Z] at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212) [2024-08-26T12:17:02.508Z] at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174) [2024-08-26T12:17:02.508Z] at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75) [2024-08-26T12:17:02.508Z] at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162) [2024-08-26T12:17:02.508Z] at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39) [2024-08-26T12:17:02.509Z] at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159) [2024-08-26T12:17:02.509Z] at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105) [2024-08-26T12:17:02.509Z] at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73) [2024-08-26T12:17:02.510Z] at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53) [2024-08-26T12:17:02.510Z] at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118) [2024-08-26T12:17:02.510Z] at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261) [2024-08-26T12:17:02.510Z] at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173) [2024-08-26T12:17:02.511Z] at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101) [2024-08-26T12:17:02.511Z] at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906) [2024-08-26T12:17:02.511Z] at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283) [2024-08-26T12:17:02.511Z] at org.apache.maven.cli.MavenCli.main (MavenCli.java:206) [2024-08-26T12:17:02.511Z] at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) [2024-08-26T12:17:02.512Z] at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) [2024-08-26T12:17:02.512Z] at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) [2024-08-26T12:17:02.512Z] at java.lang.reflect.Method.invoke (Method.java:566) [2024-08-26T12:17:02.512Z] at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:255) [2024-08-26T12:17:02.513Z] at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:201) [2024-08-26T12:17:02.513Z] at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:361) [2024-08-26T12:17:02.513Z] at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:314) [2024-08-26T12:17:02.513Z] Caused by: org.apache.maven.project.DependencyResolutionException: Could not resolve dependencies for project org.jenkins-ci.plugins:gearman-plugin:hpi:0.6.1-SNAPSHOT [2024-08-26T12:17:02.513Z] dependency: org.wikimedia.gearman:gearman-java:jar:0.10 (compile) [2024-08-26T12:17:02.514Z] Could not find artifact org.wikimedia.gearman:gearman-java:jar:0.10 in azure-internal (http://artifact-caching-proxy.privatelink.azurecr.io:8080/) [2024-08-26T12:17:02.514Z] [2024-08-26T12:17:02.514Z] at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve (DefaultProjectDependenciesResolver.java:191) [2024-08-26T12:17:02.515Z] at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies (LifecycleDependencyResolver.java:224) [2024-08-26T12:17:02.515Z] at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies (LifecycleDependencyResolver.java:136) [2024-08-26T12:17:02.515Z] at org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved (MojoExecutor.java:355) [2024-08-26T12:17:02.515Z] at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:313) [2024-08-26T12:17:02.515Z] at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212) [2024-08-26T12:17:02.516Z] at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174) [2024-08-26T12:17:02.516Z] at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75) [2024-08-26T12:17:02.516Z] at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162) [2024-08-26T12:17:02.516Z] at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39) [2024-08-26T12:17:02.516Z] at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159) [2024-08-26T12:17:02.516Z] at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105) [2024-08-26T12:17:02.517Z] at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73) [2024-08-26T12:17:02.517Z] at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53) [2024-08-26T12:17:02.518Z] at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118) [2024-08-26T12:17:02.518Z] at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261) [2024-08-26T12:17:02.518Z] at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173) [2024-08-26T12:17:02.518Z] at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101) [2024-08-26T12:17:02.518Z] at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906) [2024-08-26T12:17:02.519Z] at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283) [2024-08-26T12:17:02.519Z] at org.apache.maven.cli.MavenCli.main (MavenCli.java:206) [2024-08-26T12:17:02.519Z] at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) [2024-08-26T12:17:02.519Z] at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) [2024-08-26T12:17:02.520Z] at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) [2024-08-26T12:17:02.520Z] at java.lang.reflect.Method.invoke (Method.java:566) [2024-08-26T12:17:02.520Z] at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:255) [2024-08-26T12:17:02.520Z] at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:201) [2024-08-26T12:17:02.521Z] at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:361) [2024-08-26T12:17:02.521Z] at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:314) [2024-08-26T12:17:02.521Z] [ERROR] [2024-08-26T12:17:02.521Z] [ERROR] Re-run Maven using the -X switch to enable full debug logging. [2024-08-26T12:17:02.521Z] [ERROR] [2024-08-26T12:17:02.522Z] [ERROR] For more information about the errors and possible solutions, please read the following articles: [2024-08-26T12:17:02.522Z] [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException
The reason is the Gearman Java library ( hosted at https://gerrit.wikimedia.org/g/integration/gearman-java ) was released on https://archiva.wikimedia.org/ which now yields 404 for requests. It apparently has been decommissioned with no back compatibility archive
Change #1068709 had a related patch set uploaded (by Hashar; author: Hashar):
[integration/gearman-java@master] pom: ignore 'missing' javadoc added by Java 17
Change #1068730 had a related patch set uploaded (by Hashar; author: Hashar):
[integration/config@master] Add Java 17 to integration/gearman-java
Change #1068730 merged by jenkins-bot:
[integration/config@master] Add Java 17 to integration/gearman-java
Change #1068709 merged by jenkins-bot:
[integration/gearman-java@master] pom: add Java 17 javadoc support
I have positively tested the Gearman plugin under Java 17.
I have started the C language Gearman server (sudo apt install gearman-job-server).
Ran Jenkins from a clone of https://github.com/jenkinsci/gearman-plugin/ (the extra option is for T133737):
mvn -Dhudson.model.ParametersAction.keepUndefinedParameters=true hpi:run
I have created a Freestyle job named freestyle which runs a single shell script:
echo "It works" /usr/bin/env|egrep ^ZUUL
I can see the Jenkins jobs have been registered as Gearman fuctions:
$ gearadmin --workers 38 127.0.0.1 172.16.0.1_exec-1 : build:freestyle 39 127.0.0.1 172.16.0.1_manager : set_description:172.16.0.1 stop:172.16.0.1 40 127.0.0.1 172.16.0.1_exec-0 : build:freestyle .
Then I trigger a build:
$ gearman -s -f build:freestyle '{"ZUUL_UUID":"xb1911"}' number":11,"node_labels":["built-in"],"manager":"172.16.0.1","name":"freestyle","node_name":"","worker":"172.16.0.1_exec-1"}9% Complete {"result":"SUCCESS","number":11,"node_labels":["built-in"],"manager":"172.16.0.1","name":"freestyle","node_name":"","worker":"172.16.0.1_exec-1"}
And the job output ends with:
+ /usr/bin/env + egrep ^ZUUL ZUUL_UUID=xb1911 Finished: SUCCESS
I am keeping this open since I'd like to polish up:
- gearman-java to be buildable under Java 17
- The Gearman plugin https://github.com/jenkinsci/gearman-plugin/pull/18
gearman-java to be buildable under Java 17
The only fixed needed was Javadoc https://gerrit.wikimedia.org/r/c/integration/gearman-java/+/1068709
The Gearman plugin https://github.com/jenkinsci/gearman-plugin/pull/18
I have merged that and I have released version 0.7.0 of the plugin using:
mvn release:perform -Darguments="-DskipTests -Dfindbugs.skip=true -Dspotbugs.skip=true" -DskipTests -Dfindbugs.skip=true -Dspotbugs.skip=true
(tests take time, spotbugs has some pending failures)
I have published the release on GitHub https://github.com/jenkinsci/gearman-plugin/releases/tag/gearman-plugin-0.7.0
Those are not strictly needed, it was done merely in order to build both projects with Java 17. The actual testing happened above ( T373351#10109757 )