bazel sync: support --loading_phase_threads instead of using SkyframeExecutor.DEFAULT_THREAD_COUNT
The number of threads during the loading (i.e., the only thing that bazel sync does)
is an important tuneable to obtain good performance and there is no "one size fits
all" for this. So make `bazel sync` honor the already existing flag.
Related to #6502.
Change-Id: Iaf38315b4a6640c7011fee99da235d7c9bbba6b1
PiperOrigin-RevId: 222051926
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD
index 38fba4f..26e153c 100644
--- a/src/main/java/com/google/devtools/build/lib/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/BUILD
@@ -831,6 +831,7 @@
":events",
":exitcode-external",
":keep-going-option",
+ ":loading-phase-threads-option",
":packages-internal",
":runtime",
":util",
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/commands/SyncCommand.java b/src/main/java/com/google/devtools/build/lib/bazel/commands/SyncCommand.java
index 5cadba42..4f97453 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/commands/SyncCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/commands/SyncCommand.java
@@ -31,6 +31,7 @@
import com.google.devtools.build.lib.runtime.Command;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.runtime.KeepGoingOption;
+import com.google.devtools.build.lib.runtime.LoadingPhaseThreadsOption;
import com.google.devtools.build.lib.skyframe.PackageLookupValue;
import com.google.devtools.build.lib.skyframe.PrecomputedValue;
import com.google.devtools.build.lib.skyframe.SkyframeExecutor;
@@ -50,7 +51,7 @@
/** Syncs all repositories specifed in the workspace file */
@Command(
name = SyncCommand.NAME,
- options = {PackageCacheOptions.class, KeepGoingOption.class},
+ options = {PackageCacheOptions.class, KeepGoingOption.class, LoadingPhaseThreadsOption.class},
help = "resource:sync.txt",
shortDescription = "Syncs all repositories specifed in the workspace file",
allowResidue = false)
@@ -94,9 +95,10 @@
// Obtain the key for the top-level WORKSPACE file
SkyKey packageLookupKey = PackageLookupValue.key(Label.EXTERNAL_PACKAGE_IDENTIFIER);
+ LoadingPhaseThreadsOption threadsOption = options.getOptions(LoadingPhaseThreadsOption.class);
EvaluationContext evaluationContext =
EvaluationContext.newBuilder()
- .setNumThreads(SkyframeExecutor.DEFAULT_THREAD_COUNT)
+ .setNumThreads(threadsOption.threads)
.setEventHander(env.getReporter())
.build();
EvaluationResult<SkyValue> packageLookupValue =