From 2b210b5220fc8a1f973419c7b5ed962f0775a8ae Mon Sep 17 00:00:00 2001 From: Rene Groeschke Date: Mon, 24 Apr 2023 12:41:18 +0200 Subject: [PATCH] Fix paralle detector configuration cache compatibility (#95452) --- .../conventions/info/ParallelDetector.java | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/info/ParallelDetector.java b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/info/ParallelDetector.java index 22b4b603315d..688f2f858ae1 100644 --- a/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/info/ParallelDetector.java +++ b/build-conventions/src/main/java/org/elasticsearch/gradle/internal/conventions/info/ParallelDetector.java @@ -8,10 +8,12 @@ package org.elasticsearch.gradle.internal.conventions.info; +import org.gradle.api.Action; import org.gradle.api.logging.Logger; import org.gradle.api.logging.Logging; import org.gradle.api.Project; import org.gradle.api.provider.ProviderFactory; +import org.gradle.process.ExecSpec; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; @@ -65,22 +67,18 @@ public class ParallelDetector { } _defaultParallel = socketToCore.values().stream().mapToInt(i -> i).sum(); } else if (isMac(project.getProviders())) { - // Ask macOS to count physical CPUs for us - ByteArrayOutputStream stdout = new ByteArrayOutputStream(); - // On Apple silicon, we only want to use the performance cores boolean isAppleSilicon = project.getProviders().systemProperty("os.arch").getOrElse("").equals("aarch64"); String query = isAppleSilicon && isMontereyOrNewer(project.getProviders()) ? "hw.perflevel0.physicalcpu" : "hw.physicalcpu"; - project.exec(spec -> { - spec.setExecutable("sysctl"); - spec.args("-n", query); - spec.setStandardOutput(stdout); - }); + String stdout = project.getProviders().exec(execSpec -> + execSpec.commandLine("sysctl", "-n", query) + ).getStandardOutput().getAsText().get(); - _defaultParallel = Integer.parseInt(stdout.toString().trim()); + + _defaultParallel = Integer.parseInt(stdout.trim()); } if (_defaultParallel == null || _defaultParallel < 1) {