Clean up ExecutorBuilder and remove unneeded methods.
Part of the rollforward of https://github.com/bazelbuild/bazel/commit/37aeabcd39fe326d1c4e55693d8d207f9f7ac6c4.
PiperOrigin-RevId: 315517169
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java b/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java
index c9fd43f..0fdb3b6 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java
@@ -146,11 +146,9 @@
ExecutorBuilder executorBuilder = new ExecutorBuilder();
ModuleActionContextRegistry.Builder actionContextRegistryBuilder =
- executorBuilder.asModuleActionContextRegistryBuilder(ModuleActionContextRegistry.builder());
- SpawnStrategyRegistry.Builder spawnStrategyRegistryBuilder =
- executorBuilder.asSpawnStrategyRegistryBuilder(SpawnStrategyRegistry.builder());
+ ModuleActionContextRegistry.builder();
+ SpawnStrategyRegistry.Builder spawnStrategyRegistryBuilder = SpawnStrategyRegistry.builder();
actionContextRegistryBuilder.register(SpawnStrategyResolver.class, new SpawnStrategyResolver());
- executorBuilder.addStrategyByContext(SpawnStrategyResolver.class, "");
for (BlazeModule module : runtime.getBlazeModules()) {
try (SilentCloseable ignored = Profiler.instance().profile(module + ".executorInit")) {
@@ -193,13 +191,7 @@
actionContextRegistryBuilder.register(DynamicStrategyRegistry.class, spawnStrategyRegistry);
actionContextRegistryBuilder.register(RemoteLocalFallbackRegistry.class, spawnStrategyRegistry);
- executorBuilder.addActionContext(SpawnStrategyRegistry.class, spawnStrategyRegistry);
- executorBuilder.addStrategyByContext(SpawnStrategyRegistry.class, "");
-
ModuleActionContextRegistry moduleActionContextRegistry = actionContextRegistryBuilder.build();
- executorBuilder.addActionContext(
- ModuleActionContextRegistry.class, moduleActionContextRegistry);
- executorBuilder.addStrategyByContext(ModuleActionContextRegistry.class, "");
this.actionContextRegistry = moduleActionContextRegistry;
this.spawnStrategyRegistry = spawnStrategyRegistry;
diff --git a/src/main/java/com/google/devtools/build/lib/exec/BUILD b/src/main/java/com/google/devtools/build/lib/exec/BUILD
index e25903d..c90923a 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/exec/BUILD
@@ -107,11 +107,8 @@
srcs = ["ExecutorBuilder.java"],
deps = [
":executor_lifecycle_listener",
- ":module_action_context_registry",
":spawn_action_context_maps",
- ":spawn_strategy_registry",
"//src/main/java/com/google/devtools/build/lib/actions",
- "//src/main/java/com/google/devtools/build/lib/util",
"//src/main/java/com/google/devtools/build/lib/util:abrupt_exit_exception",
"//third_party:guava",
],
diff --git a/src/main/java/com/google/devtools/build/lib/exec/ExecutorBuilder.java b/src/main/java/com/google/devtools/build/lib/exec/ExecutorBuilder.java
index f504eb5..3c40288 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/ExecutorBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/ExecutorBuilder.java
@@ -14,16 +14,10 @@
package com.google.devtools.build.lib.exec;
import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
-import com.google.devtools.build.lib.actions.ActionContext;
import com.google.devtools.build.lib.actions.ActionInputPrefetcher;
-import com.google.devtools.build.lib.actions.Spawn;
-import com.google.devtools.build.lib.actions.SpawnStrategy;
import com.google.devtools.build.lib.util.AbruptExitException;
-import com.google.devtools.build.lib.util.RegexFilter;
import java.util.LinkedHashSet;
-import java.util.List;
import java.util.Set;
/**
@@ -50,98 +44,6 @@
}
/**
- * Adds the specified action context to the executor, by wrapping it in a simple action context
- * provider implementation.
- *
- * <p>If two action contexts are registered that share an identifying type and commandline
- * identifier the last registered will take precedence.
- */
- public <T extends ActionContext> ExecutorBuilder addActionContext(
- Class<T> identifyingType, T context, String... commandlineIdentifiers) {
- spawnActionContextMapsBuilder.addContext(identifyingType, context, commandlineIdentifiers);
- return this;
- }
-
- /**
- * Sets the strategy names for a given action mnemonic.
- *
- * <p>During execution, the {@link ProxySpawnActionContext} will ask each strategy whether it can
- * execute a given Spawn. The first strategy in the list that says so will get the job.
- */
- public ExecutorBuilder addStrategyByMnemonic(String mnemonic, List<String> strategies) {
- spawnActionContextMapsBuilder.strategyByMnemonicMap().replaceValues(mnemonic, strategies);
- return this;
- }
-
- /**
- * Sets the strategy names to use in the remote branch of dynamic execution for a given action
- * mnemonic.
- *
- * <p>During execution, each strategy is {@linkplain SpawnStrategy#canExec(Spawn,
- * ActionContext.ActionContextRegistry) asked} whether it can execute a given Spawn. The first
- * strategy in the list that says so will get the job.
- */
- public ExecutorBuilder addDynamicRemoteStrategiesByMnemonic(
- String mnemonic, List<String> strategies) {
- spawnActionContextMapsBuilder
- .remoteDynamicStrategyByMnemonicMap()
- .replaceValues(mnemonic, strategies);
- return this;
- }
-
- /**
- * Sets the strategy names to use in the local branch of dynamic execution for a given action
- * mnemonic.
- *
- * <p>During execution, each strategy is {@linkplain SpawnStrategy#canExec(Spawn,
- * ActionContext.ActionContextRegistry) asked} whether it can execute a given Spawn. The first
- * strategy in the list that says so will get the job.
- */
- public ExecutorBuilder addDynamicLocalStrategiesByMnemonic(
- String mnemonic, List<String> strategies) {
- spawnActionContextMapsBuilder
- .localDynamicStrategyByMnemonicMap()
- .replaceValues(mnemonic, strategies);
- return this;
- }
-
- /** Sets the strategy name to use if remote execution is not possible. */
- public ExecutorBuilder setRemoteFallbackStrategy(String remoteLocalFallbackStrategy) {
- spawnActionContextMapsBuilder.setRemoteFallbackStrategy(remoteLocalFallbackStrategy);
- return this;
- }
-
- /**
- * Adds an implementation with a specific strategy name.
- *
- * <p>Modules are free to provide different implementations of {@code ActionContext}. This can be
- * used, for example, to implement sandboxed or distributed execution of {@code SpawnAction}s in
- * different ways, while giving the user control over how exactly they are executed.
- *
- * <p>Example: a module requires {@code MyCustomActionContext} to be available, but doesn't
- * associate it with any strategy. Call <code>
- * addStrategyByContext(MyCustomActionContext.class, "")</code>.
- *
- * <p>Example: a module requires {@code MyLocalCustomActionContext} to be available, and wants it
- * to always use the "local" strategy. Call <code>
- * addStrategyByContext(MyCustomActionContext.class, "local")</code>.
- */
- public ExecutorBuilder addStrategyByContext(
- Class<? extends ActionContext> actionContext, String strategy) {
- spawnActionContextMapsBuilder.strategyByContextMap().put(actionContext, strategy);
- return this;
- }
-
- /**
- * Similar to {@link #addStrategyByMnemonic}, but allows specifying a regex for the set of
- * matching mnemonics, instead of an exact string.
- */
- public ExecutorBuilder addStrategyByRegexp(RegexFilter regexFilter, List<String> strategy) {
- spawnActionContextMapsBuilder.addStrategyByRegexp(regexFilter, strategy);
- return this;
- }
-
- /**
* Sets the action input prefetcher. Only one module may set the prefetcher. If multiple modules
* set it, this method will throw an {@link IllegalStateException}.
*/
@@ -161,139 +63,4 @@
executorLifecycleListeners.add(listener);
return this;
}
-
- // TODO(katre): Use a fake implementation to allow for migration to the new API.
- public ModuleActionContextRegistry.Builder asModuleActionContextRegistryBuilder(
- ModuleActionContextRegistry.Builder registryBuilder) {
- return new ModuleActionContextDelegate(registryBuilder, this);
- }
-
- private static final class ModuleActionContextDelegate
- implements ModuleActionContextRegistry.Builder {
- private final ModuleActionContextRegistry.Builder registryBuilder;
- private final ExecutorBuilder executorBuilder;
-
- private ModuleActionContextDelegate(
- ModuleActionContextRegistry.Builder registryBuilder, ExecutorBuilder executorBuilder) {
- this.executorBuilder = executorBuilder;
- this.registryBuilder = registryBuilder;
- }
-
- @Override
- public ModuleActionContextRegistry.Builder restrictTo(
- Class<?> identifyingType, String restriction) {
- this.registryBuilder.restrictTo(identifyingType, restriction);
- Preconditions.checkArgument(ActionContext.class.isAssignableFrom(identifyingType));
- @SuppressWarnings("unchecked")
- Class<? extends ActionContext> castType = (Class<? extends ActionContext>) identifyingType;
- this.executorBuilder.addStrategyByContext(castType, restriction);
- return this;
- }
-
- @Override
- public <T extends ActionContext> ModuleActionContextRegistry.Builder register(
- Class<T> identifyingType, T context, String... commandLineIdentifiers) {
- this.registryBuilder.register(identifyingType, context, commandLineIdentifiers);
- this.executorBuilder.addActionContext(identifyingType, context, commandLineIdentifiers);
- return this;
- }
-
- @Override
- public ModuleActionContextRegistry build() throws AbruptExitException {
- ModuleActionContextRegistry moduleActionContextRegistry = this.registryBuilder.build();
- return moduleActionContextRegistry;
- }
- }
-
- // TODO(katre): Use a fake implementation to allow for migration to the new API.
- public SpawnStrategyRegistry.Builder asSpawnStrategyRegistryBuilder(
- SpawnStrategyRegistry.Builder spawnStrategyRegistry) {
- return new SpawnStrategyRegistryDelegate(spawnStrategyRegistry, this);
- }
-
- private static final class SpawnStrategyRegistryDelegate
- implements SpawnStrategyRegistry.Builder {
- private final SpawnStrategyRegistry.Builder spawnStrategyRegistry;
- private final ExecutorBuilder executorBuilder;
-
- private SpawnStrategyRegistryDelegate(
- SpawnStrategyRegistry.Builder spawnStrategyRegistry, ExecutorBuilder executorBuilder) {
- this.spawnStrategyRegistry = spawnStrategyRegistry;
- this.executorBuilder = executorBuilder;
- }
-
- @Override
- public SpawnStrategyRegistry.Builder addDescriptionFilter(
- RegexFilter filter, List<String> identifiers) {
- this.spawnStrategyRegistry.addDescriptionFilter(filter, identifiers);
- this.executorBuilder.addStrategyByRegexp(filter, identifiers);
- return this;
- }
-
- @Override
- public SpawnStrategyRegistry.Builder addMnemonicFilter(
- String mnemonic, List<String> identifiers) {
- this.spawnStrategyRegistry.addMnemonicFilter(mnemonic, identifiers);
- this.executorBuilder.addStrategyByMnemonic(mnemonic, identifiers);
- return this;
- }
-
- @Override
- public SpawnStrategyRegistry.Builder registerStrategy(
- SpawnStrategy strategy, List<String> commandlineIdentifiers) {
- this.spawnStrategyRegistry.registerStrategy(strategy, commandlineIdentifiers);
- this.executorBuilder.addActionContext(
- SpawnStrategy.class, strategy, commandlineIdentifiers.toArray(new String[0]));
- return this;
- }
-
- @Override
- public SpawnStrategyRegistry.Builder useLegacyDescriptionFilterPrecedence() {
- // Ignored.
- return this;
- }
-
- @Override
- public SpawnStrategyRegistry.Builder setDefaultStrategies(List<String> defaultStrategies) {
- this.spawnStrategyRegistry.setDefaultStrategies(defaultStrategies);
- this.executorBuilder.addStrategyByMnemonic("", defaultStrategies);
- return this;
- }
-
- @Override
- public SpawnStrategyRegistry.Builder resetDefaultStrategies() {
- this.spawnStrategyRegistry.resetDefaultStrategies();
- this.executorBuilder.addStrategyByMnemonic("", ImmutableList.of(""));
- return this;
- }
-
- @Override
- public SpawnStrategyRegistry.Builder addDynamicRemoteStrategiesByMnemonic(
- String mnemonic, List<String> strategies) {
- this.spawnStrategyRegistry.addDynamicRemoteStrategiesByMnemonic(mnemonic, strategies);
- this.executorBuilder.addDynamicRemoteStrategiesByMnemonic(mnemonic, strategies);
- return this;
- }
-
- @Override
- public SpawnStrategyRegistry.Builder addDynamicLocalStrategiesByMnemonic(
- String mnemonic, List<String> strategies) {
- this.spawnStrategyRegistry.addDynamicLocalStrategiesByMnemonic(mnemonic, strategies);
- this.executorBuilder.addDynamicLocalStrategiesByMnemonic(mnemonic, strategies);
- return this;
- }
-
- @Override
- public SpawnStrategyRegistry.Builder setRemoteLocalFallbackStrategyIdentifier(
- String commandlineIdentifier) {
- this.spawnStrategyRegistry.setRemoteLocalFallbackStrategyIdentifier(commandlineIdentifier);
- this.executorBuilder.setRemoteFallbackStrategy(commandlineIdentifier);
- return this;
- }
-
- @Override
- public SpawnStrategyRegistry build() throws AbruptExitException {
- return this.spawnStrategyRegistry.build();
- }
- }
}