From 8ae105ef5f39837ebe38ca0720e1ec3799567947 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Zaj=C4=85czkowski?= Date: Mon, 13 Mar 2017 10:40:14 +0100 Subject: [PATCH 1/8] [JENKINS-42709] Unable to build for Java 8 With Java 8 set as build target version. --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 5995ba44426d..ed2ee795bc32 100644 --- a/pom.xml +++ b/pom.xml @@ -96,7 +96,7 @@ THE SOFTWARE. true 1.2 - 7 + 8 https://jenkins.io/changelog @@ -673,7 +673,7 @@ THE SOFTWARE. - 1.7.0 + 1.8.0 3.0 From a953bc863cf6da5fcd36cabb1b7ee9efb305c3c0 Mon Sep 17 00:00:00 2001 From: Baptiste Mathus Date: Mon, 13 Mar 2017 20:54:13 +0100 Subject: [PATCH 2/8] Make it compilable with JDK8 --- core/src/main/java/hudson/model/Computer.java | 2 +- core/src/main/java/hudson/model/User.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/hudson/model/Computer.java b/core/src/main/java/hudson/model/Computer.java index 3b87e42f239a..2cf2931095ec 100644 --- a/core/src/main/java/hudson/model/Computer.java +++ b/core/src/main/java/hudson/model/Computer.java @@ -778,7 +778,7 @@ public List getTiedJobs() { } public RunList getBuilds() { - return RunList.fromJobs(Jenkins.getInstance().allItems(Job.class)).node(getNode()); + return RunList.fromJobs((Iterable)Jenkins.getInstance().allItems(Job.class)).node(getNode()); } /** diff --git a/core/src/main/java/hudson/model/User.java b/core/src/main/java/hudson/model/User.java index bc9956add4ec..0b36c1086647 100644 --- a/core/src/main/java/hudson/model/User.java +++ b/core/src/main/java/hudson/model/User.java @@ -655,7 +655,7 @@ private boolean relatedTo(@Nonnull AbstractBuild b) { @SuppressWarnings("unchecked") @WithBridgeMethods(List.class) public @Nonnull RunList getBuilds() { - return RunList.fromJobs(Jenkins.getInstance().allItems(Job.class)).filter(new Predicate>() { + return RunList.fromJobs((Iterable)Jenkins.getInstance().allItems(Job.class)).filter(new Predicate>() { @Override public boolean apply(Run r) { return r instanceof AbstractBuild && relatedTo((AbstractBuild) r); } From 1eba93806cba7eed1e1d591621e90518fcb7d0c3 Mon Sep 17 00:00:00 2001 From: Baptiste Mathus Date: Tue, 14 Mar 2017 14:09:07 +0100 Subject: [PATCH 3/8] Clarify PermissionGroup.owner is @Nonnull Permission.owner is already marked @Nonnull, and is built using PermissionGroup.owner. --- core/src/main/java/hudson/security/PermissionGroup.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/hudson/security/PermissionGroup.java b/core/src/main/java/hudson/security/PermissionGroup.java index 724e3594629d..1f435be71a66 100644 --- a/core/src/main/java/hudson/security/PermissionGroup.java +++ b/core/src/main/java/hudson/security/PermissionGroup.java @@ -30,6 +30,8 @@ import java.util.SortedSet; import java.util.TreeSet; import javax.annotation.CheckForNull; +import javax.annotation.Nonnull; + import org.jvnet.localizer.Localizable; /** @@ -53,7 +55,7 @@ public final class PermissionGroup implements Iterable, Comparable

Date: Wed, 29 Mar 2017 23:08:59 +0200 Subject: [PATCH 4/8] Fix bridge-method-injector IllegalArgumentException ``` [ERROR] Failed to execute goal com.infradna.tool:bridge-method-injector:1.13:process (default) on project jenkins-core: Failed to process @WithBridgeMethods: Failed to process /home/tiste/dev/tmp/2017-03-29T23h05m22+0200-jenkins-core/jenkins/jenkins/core/target/classes/hudson/model/AbstractItem.class: IllegalArgumentException -> [Help 1] org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal com.infradna.tool:bridge-method-injector:1.13:process (default) on project jenkins-core: Failed to process @WithBridgeMethods at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288) at org.apache.maven.cli.MavenCli.main(MavenCli.java:199) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) Caused by: org.apache.maven.plugin.MojoExecutionException: Failed to process @WithBridgeMethods at com.infradna.tool.bridge_method_injector.ProcessMojo.execute(ProcessMojo.java:68) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207) ... 20 more Caused by: java.io.IOException: Failed to process /home/tiste/dev/tmp/2017-03-29T23h05m22+0200-jenkins-core/jenkins/jenkins/core/target/classes/hudson/model/AbstractItem.class at com.infradna.tool.bridge_method_injector.MethodInjector.handle(MethodInjector.java:106) at com.infradna.tool.bridge_method_injector.ProcessMojo.execute(ProcessMojo.java:65) ... 22 more Caused by: java.lang.IllegalArgumentException at org.objectweb.asm.ClassReader.(ClassReader.java:170) at org.objectweb.asm.ClassReader.(ClassReader.java:153) at org.objectweb.asm.ClassReader.(ClassReader.java:424) at com.infradna.tool.bridge_method_injector.MethodInjector.handle(MethodInjector.java:74) ... 23 more [ERROR] ``` --- pom.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pom.xml b/pom.xml index ed2ee795bc32..b19d7ec5905d 100644 --- a/pom.xml +++ b/pom.xml @@ -483,6 +483,15 @@ THE SOFTWARE. com.infradna.tool bridge-method-injector 1.13 + + + + org.ow2.asm + asm-debug-all + 5.2 + + + org.codehaus.mojo From 77dfa64b6a173b58c7f61107dcc51a61f7a3466a Mon Sep 17 00:00:00 2001 From: Baptiste Mathus Date: Wed, 29 Mar 2017 23:55:38 +0200 Subject: [PATCH 5/8] Fix error with 1.8.0_77 in CI, does not happen with 1.8.0_121 Probably a bit ugly, but well for a test it should be acceptable. --- test/src/test/java/jenkins/util/JenkinsJVMRealTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/src/test/java/jenkins/util/JenkinsJVMRealTest.java b/test/src/test/java/jenkins/util/JenkinsJVMRealTest.java index bdce8a15e3d8..a9e8f1108e80 100644 --- a/test/src/test/java/jenkins/util/JenkinsJVMRealTest.java +++ b/test/src/test/java/jenkins/util/JenkinsJVMRealTest.java @@ -17,7 +17,7 @@ public class JenkinsJVMRealTest { public static JenkinsRule j = new JenkinsRule(); @Test - public void isJenkinsJVM() throws Exception { + public void isJenkinsJVM() throws Throwable { assertThat(new IsJenkinsJVM().call(), is(true)); DumbSlave slave = j.createOnlineSlave(); assertThat(slave.getChannel().call(new IsJenkinsJVM()), is(false)); From 65c0a2c70871bbddb0c0ba9a113db7da53918878 Mon Sep 17 00:00:00 2001 From: Baptiste Mathus Date: Wed, 29 Mar 2017 23:17:36 +0200 Subject: [PATCH 6/8] Fix generics ambiguity Inline the method to use concrete subtypes of AbstractBuild to remove ambiguity ``` [INFO] Jenkins war ........................................ SUCCESS [04:19 min] [INFO] Tests for Jenkins core ............................. FAILURE [ 18.740 s] [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 06:01 min [INFO] Finished at: 2017-03-29T23:07:16+02:00 [INFO] Final Memory: 92M/504M [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.0:testCompile (default-testCompile) on project test: Compilation failure [ERROR] /home/tiste/dev/JENKINS/jenkins/test/src/test/java/hudson/model/GetEnvironmentOutsideBuildTest.java:[89,30] error: no suitable method found for buildAndAssertSuccess(AbstractProject) [ERROR] -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException [ERROR] [ERROR] After correcting the problems, you can resume the build with the command [ERROR] mvn -rf :test ``` --- .../model/GetEnvironmentOutsideBuildTest.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/test/src/test/java/hudson/model/GetEnvironmentOutsideBuildTest.java b/test/src/test/java/hudson/model/GetEnvironmentOutsideBuildTest.java index e87597b53717..b13f17ef4593 100644 --- a/test/src/test/java/hudson/model/GetEnvironmentOutsideBuildTest.java +++ b/test/src/test/java/hudson/model/GetEnvironmentOutsideBuildTest.java @@ -6,8 +6,10 @@ import java.io.IOException; import hudson.EnvVars; +import hudson.matrix.MatrixBuild; import hudson.matrix.MatrixProject; import hudson.maven.MavenModuleSet; +import hudson.maven.MavenModuleSetBuild; import hudson.tasks.Maven.MavenInstallation; import hudson.util.StreamTaskListener; @@ -69,24 +71,23 @@ private void whenJenkinsMasterHasNoExecutors() throws IOException { public void testMaven() throws Exception { MavenModuleSet m = createSimpleMavenProject(); - assertGetEnvironmentCallOutsideBuildWorks(m); + final MavenModuleSetBuild build = buildAndAssertSuccess(m); + + assertGetEnvironmentWorks(build); } public void testFreestyle() throws Exception { FreeStyleProject project = createFreeStyleProject(); - assertGetEnvironmentCallOutsideBuildWorks(project); + final FreeStyleBuild build = buildAndAssertSuccess(project); + + assertGetEnvironmentWorks(build); } public void testMatrix() throws Exception { MatrixProject createMatrixProject = jenkins.createProject(MatrixProject.class, "mp"); - assertGetEnvironmentCallOutsideBuildWorks(createMatrixProject); - } - - @SuppressWarnings({"rawtypes", "unchecked"}) - private void assertGetEnvironmentCallOutsideBuildWorks(AbstractProject job) throws Exception { - AbstractBuild build = buildAndAssertSuccess(job); + final MatrixBuild build = buildAndAssertSuccess(createMatrixProject); assertGetEnvironmentWorks(build); } From 496d574b8c31f06b3c005cbdc84370bb0d47c69a Mon Sep 17 00:00:00 2001 From: Baptiste Mathus Date: Thu, 30 Mar 2017 18:16:09 +0200 Subject: [PATCH 7/8] Use released bridge-method-injector:1.15 And suppress associated workaround --- pom.xml | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/pom.xml b/pom.xml index b19d7ec5905d..4fdeec1eb83f 100644 --- a/pom.xml +++ b/pom.xml @@ -482,16 +482,7 @@ THE SOFTWARE. com.infradna.tool bridge-method-injector - 1.13 - - - - org.ow2.asm - asm-debug-all - 5.2 - - - + 1.15 org.codehaus.mojo From 067ba0ebe887f441c4500f962473181ad22f152a Mon Sep 17 00:00:00 2001 From: Baptiste Mathus Date: Mon, 3 Apr 2017 15:43:42 +0200 Subject: [PATCH 8/8] Remove MaxPermSize usage Obsolete with Java 8. Permanent generation was removed. --- Jenkinsfile | 4 ++-- core/pom.xml | 2 +- core/src/build-script/Cobertura.groovy | 1 - test/pom.xml | 2 +- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 5f960ab4b57c..d7cc19de84f3 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -38,8 +38,8 @@ for(i = 0; i < buildTypes.size(); i++) { timeout(time: 180, unit: 'MINUTES') { // See below for what this method does - we're passing an arbitrary environment // variable to it so that JAVA_OPTS and MAVEN_OPTS are set correctly. - withMavenEnv(["JAVA_OPTS=-Xmx1536m -Xms512m -XX:MaxPermSize=1024m", - "MAVEN_OPTS=-Xmx1536m -Xms512m -XX:MaxPermSize=1024m"]) { + withMavenEnv(["JAVA_OPTS=-Xmx1536m -Xms512m", + "MAVEN_OPTS=-Xmx1536m -Xms512m"]) { // Actually run Maven! // The -Dmaven.repo.local=${pwd()}/.repository means that Maven will create a // .repository directory at the root of the build (which it gets from the diff --git a/core/pom.xml b/core/pom.xml index dbfe9b731524..6d51990f9e20 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -771,7 +771,7 @@ THE SOFTWARE. 0.5C true - -XX:MaxPermSize=128m -noverify + -noverify false diff --git a/core/src/build-script/Cobertura.groovy b/core/src/build-script/Cobertura.groovy index 073f6291b77c..49b773b49ba1 100644 --- a/core/src/build-script/Cobertura.groovy +++ b/core/src/build-script/Cobertura.groovy @@ -56,7 +56,6 @@ public class Cobertura { } sysproperty(key:"net.sourceforge.cobertura.datafile",value:ser) sysproperty(key:"hudson.ClassicPluginStrategy.useAntClassLoader",value:"true") - jvmarg(value:"-XX:MaxPermSize=128m") } } diff --git a/test/pom.xml b/test/pom.xml index 7f9c1c9b2438..50f2a485381d 100644 --- a/test/pom.xml +++ b/test/pom.xml @@ -213,7 +213,7 @@ THE SOFTWARE. maven-surefire-plugin - ${jacocoSurefireArgs} -Dfile.encoding=UTF-8 -Xmx1g -XX:MaxPermSize=128m + ${jacocoSurefireArgs} -Dfile.encoding=UTF-8 -Xmx1g true