Fix build issue if no specific Java version are set (#41379)

If no Java versions are set then when we size the executor thread pool
we end up with zero threads, which is illegal. This commit avoids that
problem by only starting the executor when needed.
This commit is contained in:
Jason Tedor 2019-04-19 14:08:22 -04:00
parent bcd0939b61
commit 154d40494f
No known key found for this signature in database
GPG Key ID: FA89F05560F16BC5

View File

@ -130,13 +130,6 @@ class BuildPlugin implements Plugin<Project> {
String runtimeJavaHome = findRuntimeJavaHome(compilerJavaHome) String runtimeJavaHome = findRuntimeJavaHome(compilerJavaHome)
File gradleJavaHome = Jvm.current().javaHome File gradleJavaHome = Jvm.current().javaHome
final Map<Integer, String> javaVersions = [:]
for (int version = 8; version <= Integer.parseInt(minimumCompilerVersion.majorVersion); version++) {
if(System.getenv(getJavaHomeEnvVarName(version.toString())) != null) {
javaVersions.put(version, findJavaHome(version.toString()));
}
}
String javaVendor = System.getProperty('java.vendor') String javaVendor = System.getProperty('java.vendor')
String gradleJavaVersion = System.getProperty('java.version') String gradleJavaVersion = System.getProperty('java.version')
String gradleJavaVersionDetails = "${javaVendor} ${gradleJavaVersion}" + String gradleJavaVersionDetails = "${javaVendor} ${gradleJavaVersion}" +
@ -197,6 +190,15 @@ class BuildPlugin implements Plugin<Project> {
throw new GradleException(message) throw new GradleException(message)
} }
final Map<Integer, String> javaVersions = [:]
for (int version = 8; version <= Integer.parseInt(minimumCompilerVersion.majorVersion); version++) {
if(System.getenv(getJavaHomeEnvVarName(version.toString())) != null) {
javaVersions.put(version, findJavaHome(version.toString()));
}
}
if (javaVersions.isEmpty() == false) {
ExecutorService exec = Executors.newFixedThreadPool(javaVersions.size()) ExecutorService exec = Executors.newFixedThreadPool(javaVersions.size())
Set<Future<Void>> results = new HashSet<>() Set<Future<Void>> results = new HashSet<>()
@ -231,6 +233,7 @@ class BuildPlugin implements Plugin<Project> {
exec.shutdown(); exec.shutdown();
} }
} }
}
project.rootProject.ext.compilerJavaHome = compilerJavaHome project.rootProject.ext.compilerJavaHome = compilerJavaHome
project.rootProject.ext.runtimeJavaHome = runtimeJavaHome project.rootProject.ext.runtimeJavaHome = runtimeJavaHome