From 857d5fe21ed5ee9ce9908c8d14bbcb4ae92f1adb Mon Sep 17 00:00:00 2001 From: Jason Tedor Date: Tue, 8 May 2018 10:48:44 -0400 Subject: [PATCH 1/3] Stop forking javac We started forking javac to avoid GC overhead when running builds. Yet, we do not seem to have this problem anymore and not forking leads to a substantial speed improvement. This commit stops forking javac. --- .../main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy b/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy index 18f264690fad9..a2cc2cce0b6ee 100644 --- a/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy +++ b/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy @@ -497,8 +497,7 @@ class BuildPlugin implements Plugin { project.afterEvaluate { project.tasks.withType(JavaCompile) { final JavaVersion targetCompatibilityVersion = JavaVersion.toVersion(it.targetCompatibility) - // we fork because compiling lots of different classes in a shared jvm can eventually trigger GC overhead limitations - options.fork = true + options.fork = false options.forkOptions.javaHome = new File(project.compilerJavaHome) options.forkOptions.memoryMaximumSize = "512m" if (targetCompatibilityVersion == JavaVersion.VERSION_1_8) { From f526d4404bb9fea7d901841874448afcf7f3ab82 Mon Sep 17 00:00:00 2001 From: Jason Tedor Date: Tue, 8 May 2018 11:39:58 -0400 Subject: [PATCH 2/3] Fork if needed --- .../main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy b/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy index a2cc2cce0b6ee..27128dc97bdf8 100644 --- a/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy +++ b/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy @@ -497,7 +497,8 @@ class BuildPlugin implements Plugin { project.afterEvaluate { project.tasks.withType(JavaCompile) { final JavaVersion targetCompatibilityVersion = JavaVersion.toVersion(it.targetCompatibility) - options.fork = false + // we only fork if the Gradle JDK is not the same as the compiler JDK + options.fork = new File(project.compilerJavaHome) != Jvm.current().javaHome options.forkOptions.javaHome = new File(project.compilerJavaHome) options.forkOptions.memoryMaximumSize = "512m" if (targetCompatibilityVersion == JavaVersion.VERSION_1_8) { From 191118d63a6689f757a49af8ca530a9e6b1b61d1 Mon Sep 17 00:00:00 2001 From: Jason Tedor Date: Tue, 8 May 2018 11:45:02 -0400 Subject: [PATCH 3/3] Iteration --- .../org/elasticsearch/gradle/BuildPlugin.groovy | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy b/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy index 27128dc97bdf8..88ded22fb4df6 100644 --- a/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy +++ b/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy @@ -497,10 +497,15 @@ class BuildPlugin implements Plugin { project.afterEvaluate { project.tasks.withType(JavaCompile) { final JavaVersion targetCompatibilityVersion = JavaVersion.toVersion(it.targetCompatibility) + final compilerJavaHomeFile = new File(project.compilerJavaHome) // we only fork if the Gradle JDK is not the same as the compiler JDK - options.fork = new File(project.compilerJavaHome) != Jvm.current().javaHome - options.forkOptions.javaHome = new File(project.compilerJavaHome) - options.forkOptions.memoryMaximumSize = "512m" + if (compilerJavaHomeFile.canonicalPath == Jvm.current().javaHome.canonicalPath) { + options.fork = false + } else { + options.fork = true + options.forkOptions.javaHome = compilerJavaHomeFile + options.forkOptions.memoryMaximumSize = "512m" + } if (targetCompatibilityVersion == JavaVersion.VERSION_1_8) { // compile with compact 3 profile by default // NOTE: this is just a compile time check: does not replace testing with a compact3 JRE