Rename SpawnActionContext to SpawnStrategy. This is in preparation for splitting SpawnStrategy from ActionContext and making it a separate entity. RELNOTES: None PiperOrigin-RevId: 290328486
diff --git a/src/main/java/com/google/devtools/build/lib/actions/DynamicStrategyRegistry.java b/src/main/java/com/google/devtools/build/lib/actions/DynamicStrategyRegistry.java index b81c508..edd69f1 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/DynamicStrategyRegistry.java +++ b/src/main/java/com/google/devtools/build/lib/actions/DynamicStrategyRegistry.java
@@ -26,11 +26,10 @@ } /** - * Returns the spawn strategy implementations that {@linkplain SpawnActionContext#canExec can - * execute} the given spawn in the order that they were registered for the provided dynamic mode. + * Returns the spawn strategy implementations that {@linkplain SpawnStrategy#canExec can execute} + * the given spawn in the order that they were registered for the provided dynamic mode. */ - List<SandboxedSpawnActionContext> getDynamicSpawnActionContexts( - Spawn spawn, DynamicMode dynamicMode); + List<SandboxedSpawnStrategy> getDynamicSpawnActionContexts(Spawn spawn, DynamicMode dynamicMode); /** * Notifies all strategies applying to at least one mnemonic (including the empty all-catch one)
diff --git a/src/main/java/com/google/devtools/build/lib/actions/SandboxedSpawnActionContext.java b/src/main/java/com/google/devtools/build/lib/actions/SandboxedSpawnStrategy.java similarity index 74% rename from src/main/java/com/google/devtools/build/lib/actions/SandboxedSpawnActionContext.java rename to src/main/java/com/google/devtools/build/lib/actions/SandboxedSpawnStrategy.java index 4de6e8f..6fcd3ed 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/SandboxedSpawnActionContext.java +++ b/src/main/java/com/google/devtools/build/lib/actions/SandboxedSpawnStrategy.java
@@ -18,12 +18,12 @@ import javax.annotation.Nullable; /** - * A context that allows execution of {@link Spawn} instances similar to {@link SpawnActionContext}, - * but with the additional restriction that during execution the {@link Spawn} must not be allowed - * to modify the current execution root of the build. Instead, the {@link Spawn} should be executed - * in a sandbox or on a remote system and its output files only be moved to the execution root. + * A context that allows execution of {@link Spawn} instances similar to {@link SpawnStrategy}, but + * with the additional restriction that during execution the {@link Spawn} must not be allowed to + * modify the current execution root of the build. Instead, the {@link Spawn} should be executed in + * a sandbox or on a remote system and its output files only be moved to the execution root. */ -public interface SandboxedSpawnActionContext extends SpawnActionContext { +public interface SandboxedSpawnStrategy extends SpawnStrategy { /** Lambda interface to stop other instances of the same spawn before writing outputs. */ @FunctionalInterface @@ -40,10 +40,9 @@ /** * Executes the given spawn. * - * <p>When the {@link SpawnActionContext} is about to write output files into the execroot, it - * first asks any other concurrent instances of this same spawn (handled by other spawn runners - * when dynamic scheduling is enabled) to stop by invoking the {@code stopConcurrentSpawns} - * lambda. + * <p>When the {@link SpawnStrategy} is about to write output files into the execroot, it first + * asks any other concurrent instances of this same spawn (handled by other spawn runners when + * dynamic scheduling is enabled) to stop by invoking the {@code stopConcurrentSpawns} lambda. * * @return a List of {@link SpawnResult}s containing metadata about the Spawn's execution. This * will typically contain one element, but could contain no elements if spawn execution did
diff --git a/src/main/java/com/google/devtools/build/lib/actions/SpawnActionContext.java b/src/main/java/com/google/devtools/build/lib/actions/SpawnStrategy.java similarity index 93% rename from src/main/java/com/google/devtools/build/lib/actions/SpawnActionContext.java rename to src/main/java/com/google/devtools/build/lib/actions/SpawnStrategy.java index 8d31ec0..d0ef44c 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/SpawnActionContext.java +++ b/src/main/java/com/google/devtools/build/lib/actions/SpawnStrategy.java
@@ -15,11 +15,9 @@ import com.google.common.collect.ImmutableList; -/** - * A context that allows execution of {@link Spawn} instances. - */ +/** A context that allows execution of {@link Spawn} instances. */ @ActionContextMarker(name = "spawn") -public interface SpawnActionContext extends ActionContext { +public interface SpawnStrategy extends ActionContext { /** * Executes the given spawn and returns metadata about the execution. Implementations must
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java index d518b98..31955b7 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java
@@ -54,9 +54,9 @@ import com.google.devtools.build.lib.actions.RunfilesSupplier; import com.google.devtools.build.lib.actions.SingleStringArgFormatter; import com.google.devtools.build.lib.actions.Spawn; -import com.google.devtools.build.lib.actions.SpawnActionContext; import com.google.devtools.build.lib.actions.SpawnContinuation; import com.google.devtools.build.lib.actions.SpawnResult; +import com.google.devtools.build.lib.actions.SpawnStrategy; import com.google.devtools.build.lib.actions.extra.EnvironmentVariable; import com.google.devtools.build.lib.actions.extra.ExtraActionInfo; import com.google.devtools.build.lib.actions.extra.SpawnInfo; @@ -326,7 +326,7 @@ } SpawnContinuation spawnContinuation = actionExecutionContext - .getContext(SpawnActionContext.class) + .getContext(SpawnStrategy.class) .beginExecution(spawn, actionExecutionContext); return new SpawnActionContinuation(actionExecutionContext, spawnContinuation); }
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraAction.java b/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraAction.java index a71f8a9..e53a48d 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraAction.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/extra/ExtraAction.java
@@ -30,8 +30,8 @@ import com.google.devtools.build.lib.actions.CommandLines.CommandLineLimits; import com.google.devtools.build.lib.actions.CompositeRunfilesSupplier; import com.google.devtools.build.lib.actions.RunfilesSupplier; -import com.google.devtools.build.lib.actions.SpawnActionContext; import com.google.devtools.build.lib.actions.SpawnResult; +import com.google.devtools.build.lib.actions.SpawnStrategy; import com.google.devtools.build.lib.analysis.actions.SpawnAction; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; @@ -45,7 +45,7 @@ /** * Action used by extra_action rules to create an action that shadows an existing action. Runs a - * command-line using {@link SpawnActionContext} for executions. + * command-line using {@link SpawnStrategy} for executions. */ public final class ExtraAction extends SpawnAction { private final Action shadowedAction;
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/coverage/CoverageReportActionBuilder.java b/src/main/java/com/google/devtools/build/lib/bazel/coverage/CoverageReportActionBuilder.java index 8cd026b..3992a75 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/coverage/CoverageReportActionBuilder.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/coverage/CoverageReportActionBuilder.java
@@ -35,8 +35,8 @@ import com.google.devtools.build.lib.actions.ResourceSet; import com.google.devtools.build.lib.actions.RunfilesSupplier; import com.google.devtools.build.lib.actions.Spawn; -import com.google.devtools.build.lib.actions.SpawnActionContext; import com.google.devtools.build.lib.actions.SpawnResult; +import com.google.devtools.build.lib.actions.SpawnStrategy; import com.google.devtools.build.lib.analysis.BlazeDirectories; import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.analysis.FilesToRunProvider; @@ -131,7 +131,8 @@ this, LOCAL_RESOURCES); List<SpawnResult> spawnResults = - actionExecutionContext.getContext(SpawnActionContext.class) + actionExecutionContext + .getContext(SpawnStrategy.class) .exec(spawn, actionExecutionContext); actionExecutionContext.getEventHandler().handle(Event.info(locationMessage)); return ActionResult.create(spawnResults);
diff --git a/src/main/java/com/google/devtools/build/lib/dynamic/DynamicExecutionModule.java b/src/main/java/com/google/devtools/build/lib/dynamic/DynamicExecutionModule.java index eefd43c..d7126c8 100644 --- a/src/main/java/com/google/devtools/build/lib/dynamic/DynamicExecutionModule.java +++ b/src/main/java/com/google/devtools/build/lib/dynamic/DynamicExecutionModule.java
@@ -22,7 +22,7 @@ import com.google.common.util.concurrent.ThreadFactoryBuilder; import com.google.devtools.build.lib.actions.ExecutorInitException; import com.google.devtools.build.lib.actions.Spawn; -import com.google.devtools.build.lib.actions.SpawnActionContext; +import com.google.devtools.build.lib.actions.SpawnStrategy; import com.google.devtools.build.lib.actions.Spawns; import com.google.devtools.build.lib.buildtool.BuildRequest; import com.google.devtools.build.lib.concurrent.ExecutorUtil; @@ -114,16 +114,16 @@ if (options.legacySpawnScheduler) { builder.addActionContext( - SpawnActionContext.class, + SpawnStrategy.class, new LegacyDynamicSpawnStrategy(executorService, options, this::getExecutionPolicy), COMMANDLINE_IDENTIFIERS); } else { builder.addActionContext( - SpawnActionContext.class, + SpawnStrategy.class, new DynamicSpawnStrategy(executorService, options, this::getExecutionPolicy), COMMANDLINE_IDENTIFIERS); } - builder.addStrategyByContext(SpawnActionContext.class, "dynamic"); + builder.addStrategyByContext(SpawnStrategy.class, "dynamic"); for (Map.Entry<String, List<String>> mnemonicToStrategies : getLocalStrategies(options)) { throwIfContainsDynamic(mnemonicToStrategies.getValue(), "--dynamic_local_strategy");
diff --git a/src/main/java/com/google/devtools/build/lib/dynamic/DynamicSpawnStrategy.java b/src/main/java/com/google/devtools/build/lib/dynamic/DynamicSpawnStrategy.java index 7442c61..6b9c3c9 100644 --- a/src/main/java/com/google/devtools/build/lib/dynamic/DynamicSpawnStrategy.java +++ b/src/main/java/com/google/devtools/build/lib/dynamic/DynamicSpawnStrategy.java
@@ -26,11 +26,11 @@ import com.google.devtools.build.lib.actions.ActionExecutionContext; import com.google.devtools.build.lib.actions.DynamicStrategyRegistry; import com.google.devtools.build.lib.actions.ExecException; -import com.google.devtools.build.lib.actions.SandboxedSpawnActionContext; -import com.google.devtools.build.lib.actions.SandboxedSpawnActionContext.StopConcurrentSpawns; +import com.google.devtools.build.lib.actions.SandboxedSpawnStrategy; +import com.google.devtools.build.lib.actions.SandboxedSpawnStrategy.StopConcurrentSpawns; import com.google.devtools.build.lib.actions.Spawn; -import com.google.devtools.build.lib.actions.SpawnActionContext; import com.google.devtools.build.lib.actions.SpawnResult; +import com.google.devtools.build.lib.actions.SpawnStrategy; import com.google.devtools.build.lib.exec.ExecutionPolicy; import com.google.devtools.build.lib.util.io.FileOutErr; import com.google.devtools.build.lib.vfs.Path; @@ -62,7 +62,7 @@ * save 0.5s of time, when it then takes us 5 seconds to upload the results to remote executors for * another action that's scheduled to run there. */ -public class DynamicSpawnStrategy implements SpawnActionContext { +public class DynamicSpawnStrategy implements SpawnStrategy { private static final Logger logger = Logger.getLogger(DynamicSpawnStrategy.class.getName()); @@ -330,14 +330,14 @@ public boolean canExec(Spawn spawn, ActionContextRegistry actionContextRegistry) { DynamicStrategyRegistry dynamicStrategyRegistry = actionContextRegistry.getContext(DynamicStrategyRegistry.class); - for (SandboxedSpawnActionContext strategy : + for (SandboxedSpawnStrategy strategy : dynamicStrategyRegistry.getDynamicSpawnActionContexts( spawn, DynamicStrategyRegistry.DynamicMode.LOCAL)) { if (strategy.canExec(spawn, actionContextRegistry)) { return true; } } - for (SandboxedSpawnActionContext strategy : + for (SandboxedSpawnStrategy strategy : dynamicStrategyRegistry.getDynamicSpawnActionContexts( spawn, DynamicStrategyRegistry.DynamicMode.REMOTE)) { if (strategy.canExec(spawn, actionContextRegistry)) { @@ -371,7 +371,7 @@ DynamicStrategyRegistry dynamicStrategyRegistry = actionExecutionContext.getContext(DynamicStrategyRegistry.class); - for (SandboxedSpawnActionContext strategy : + for (SandboxedSpawnStrategy strategy : dynamicStrategyRegistry.getDynamicSpawnActionContexts( spawn, DynamicStrategyRegistry.DynamicMode.LOCAL)) { return strategy.exec(spawn, actionExecutionContext, stopConcurrentSpawns); @@ -388,7 +388,7 @@ DynamicStrategyRegistry dynamicStrategyRegistry = actionExecutionContext.getContext(DynamicStrategyRegistry.class); - for (SandboxedSpawnActionContext strategy : + for (SandboxedSpawnStrategy strategy : dynamicStrategyRegistry.getDynamicSpawnActionContexts( spawn, DynamicStrategyRegistry.DynamicMode.REMOTE)) { return strategy.exec(spawn, actionExecutionContext, stopConcurrentSpawns);
diff --git a/src/main/java/com/google/devtools/build/lib/dynamic/LegacyDynamicSpawnStrategy.java b/src/main/java/com/google/devtools/build/lib/dynamic/LegacyDynamicSpawnStrategy.java index 7205547..e459369 100644 --- a/src/main/java/com/google/devtools/build/lib/dynamic/LegacyDynamicSpawnStrategy.java +++ b/src/main/java/com/google/devtools/build/lib/dynamic/LegacyDynamicSpawnStrategy.java
@@ -25,11 +25,11 @@ import com.google.devtools.build.lib.actions.EnvironmentalExecException; import com.google.devtools.build.lib.actions.ExecException; import com.google.devtools.build.lib.actions.ExecutionRequirements; -import com.google.devtools.build.lib.actions.SandboxedSpawnActionContext; -import com.google.devtools.build.lib.actions.SandboxedSpawnActionContext.StopConcurrentSpawns; +import com.google.devtools.build.lib.actions.SandboxedSpawnStrategy; +import com.google.devtools.build.lib.actions.SandboxedSpawnStrategy.StopConcurrentSpawns; import com.google.devtools.build.lib.actions.Spawn; -import com.google.devtools.build.lib.actions.SpawnActionContext; import com.google.devtools.build.lib.actions.SpawnResult; +import com.google.devtools.build.lib.actions.SpawnStrategy; import com.google.devtools.build.lib.actions.Spawns; import com.google.devtools.build.lib.actions.UserExecException; import com.google.devtools.build.lib.events.Event; @@ -62,7 +62,7 @@ * save 0.5s of time, when it then takes us 5 seconds to upload the results to remote executors for * another action that's scheduled to run there. */ -public class LegacyDynamicSpawnStrategy implements SpawnActionContext { +public class LegacyDynamicSpawnStrategy implements SpawnStrategy { private static final Logger logger = Logger.getLogger(DynamicSpawnStrategy.class.getName()); enum StrategyIdentifier { @@ -118,7 +118,7 @@ private final AtomicBoolean delayLocalExecution = new AtomicBoolean(false); // TODO(steinman): This field is never assigned and canExec() would throw if trying to access it. - private @Nullable SandboxedSpawnActionContext workerStrategy; + @Nullable private SandboxedSpawnStrategy workerStrategy; /** * Constructs a {@code DynamicSpawnStrategy}. @@ -196,8 +196,7 @@ Phaser bothTasksFinished = new Phaser(/*parties=*/ 1); try { - final AtomicReference<SpawnActionContext> outputsHaveBeenWritten = - new AtomicReference<>(null); + final AtomicReference<SpawnStrategy> outputsHaveBeenWritten = new AtomicReference<>(null); dynamicExecutionResult = executorService.invokeAny( ImmutableList.of( @@ -308,14 +307,14 @@ DynamicStrategyRegistry dynamicStrategyRegistry = actionContextRegistry.getContext(DynamicStrategyRegistry.class); - for (SandboxedSpawnActionContext strategy : + for (SandboxedSpawnStrategy strategy : dynamicStrategyRegistry.getDynamicSpawnActionContexts( spawn, DynamicStrategyRegistry.DynamicMode.LOCAL)) { if (strategy.canExec(spawn, actionContextRegistry)) { return true; } } - for (SandboxedSpawnActionContext strategy : + for (SandboxedSpawnStrategy strategy : dynamicStrategyRegistry.getDynamicSpawnActionContexts( spawn, DynamicStrategyRegistry.DynamicMode.REMOTE)) { if (strategy.canExec(spawn, actionContextRegistry)) { @@ -354,8 +353,7 @@ } private static StopConcurrentSpawns lockOutputFiles( - SandboxedSpawnActionContext token, - @Nullable AtomicReference<SpawnActionContext> outputWriteBarrier) { + SandboxedSpawnStrategy token, @Nullable AtomicReference<SpawnStrategy> outputWriteBarrier) { if (outputWriteBarrier == null) { return null; } else { @@ -371,12 +369,12 @@ private static ImmutableList<SpawnResult> runLocally( Spawn spawn, ActionExecutionContext actionExecutionContext, - @Nullable AtomicReference<SpawnActionContext> outputWriteBarrier) + @Nullable AtomicReference<SpawnStrategy> outputWriteBarrier) throws ExecException, InterruptedException { DynamicStrategyRegistry dynamicStrategyRegistry = actionExecutionContext.getContext(DynamicStrategyRegistry.class); - for (SandboxedSpawnActionContext strategy : + for (SandboxedSpawnStrategy strategy : dynamicStrategyRegistry.getDynamicSpawnActionContexts( spawn, DynamicStrategyRegistry.DynamicMode.LOCAL)) { if (!strategy.toString().contains("worker") || supportsWorkers(spawn)) { @@ -391,12 +389,12 @@ private static ImmutableList<SpawnResult> runRemotely( Spawn spawn, ActionExecutionContext actionExecutionContext, - @Nullable AtomicReference<SpawnActionContext> outputWriteBarrier) + @Nullable AtomicReference<SpawnStrategy> outputWriteBarrier) throws ExecException, InterruptedException { DynamicStrategyRegistry dynamicStrategyRegistry = actionExecutionContext.getContext(DynamicStrategyRegistry.class); - for (SandboxedSpawnActionContext strategy : + for (SandboxedSpawnStrategy strategy : dynamicStrategyRegistry.getDynamicSpawnActionContexts( spawn, DynamicStrategyRegistry.DynamicMode.REMOTE)) { return strategy.exec(
diff --git a/src/main/java/com/google/devtools/build/lib/exec/AbstractSpawnStrategy.java b/src/main/java/com/google/devtools/build/lib/exec/AbstractSpawnStrategy.java index 276ae3d..c7ddf47 100644 --- a/src/main/java/com/google/devtools/build/lib/exec/AbstractSpawnStrategy.java +++ b/src/main/java/com/google/devtools/build/lib/exec/AbstractSpawnStrategy.java
@@ -29,7 +29,7 @@ import com.google.devtools.build.lib.actions.LostInputsExecException; import com.google.devtools.build.lib.actions.MetadataProvider; import com.google.devtools.build.lib.actions.RunningActionEvent; -import com.google.devtools.build.lib.actions.SandboxedSpawnActionContext; +import com.google.devtools.build.lib.actions.SandboxedSpawnStrategy; import com.google.devtools.build.lib.actions.SchedulingActionEvent; import com.google.devtools.build.lib.actions.Spawn; import com.google.devtools.build.lib.actions.SpawnResult; @@ -54,7 +54,7 @@ import javax.annotation.Nullable; /** Abstract common ancestor for spawn strategies implementing the common parts. */ -public abstract class AbstractSpawnStrategy implements SandboxedSpawnActionContext { +public abstract class AbstractSpawnStrategy implements SandboxedSpawnStrategy { /** * Last unique identifier assigned to a spawn by this strategy.
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 46b1c51..73da12989 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
@@ -20,7 +20,7 @@ import com.google.devtools.build.lib.actions.Executor; import com.google.devtools.build.lib.actions.ExecutorInitException; import com.google.devtools.build.lib.actions.Spawn; -import com.google.devtools.build.lib.actions.SpawnActionContext; +import com.google.devtools.build.lib.actions.SpawnStrategy; import com.google.devtools.build.lib.util.RegexFilter; import java.util.LinkedHashSet; import java.util.List; @@ -77,7 +77,7 @@ * 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 SpawnActionContext#canExec(Spawn, + * <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. */ @@ -93,7 +93,7 @@ * 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 SpawnActionContext#canExec(Spawn, + * <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. */
diff --git a/src/main/java/com/google/devtools/build/lib/exec/ProxySpawnActionContext.java b/src/main/java/com/google/devtools/build/lib/exec/ProxySpawnActionContext.java index c565aed..8d2d9fc 100644 --- a/src/main/java/com/google/devtools/build/lib/exec/ProxySpawnActionContext.java +++ b/src/main/java/com/google/devtools/build/lib/exec/ProxySpawnActionContext.java
@@ -18,16 +18,16 @@ import com.google.devtools.build.lib.actions.ActionExecutionContext; import com.google.devtools.build.lib.actions.ExecException; import com.google.devtools.build.lib.actions.Spawn; -import com.google.devtools.build.lib.actions.SpawnActionContext; import com.google.devtools.build.lib.actions.SpawnContinuation; import com.google.devtools.build.lib.actions.SpawnResult; +import com.google.devtools.build.lib.actions.SpawnStrategy; import com.google.devtools.build.lib.actions.UserExecException; import com.google.devtools.build.lib.events.NullEventHandler; import java.util.List; import java.util.stream.Collectors; /** Proxy that looks up the right SpawnActionContext for a spawn during {@link #exec}. */ -public final class ProxySpawnActionContext implements SpawnActionContext { +public final class ProxySpawnActionContext implements SpawnStrategy { private final SpawnActionContextMaps spawnActionContextMaps; @@ -35,7 +35,7 @@ * Creates a new {@link ProxySpawnActionContext}. * * @param spawnActionContextMaps The {@link SpawnActionContextMaps} to use to decide which {@link - * SpawnActionContext} should execute a given {@link Spawn} during {@link #exec}. + * SpawnStrategy} should execute a given {@link Spawn} during {@link #exec}. */ public ProxySpawnActionContext(SpawnActionContextMaps spawnActionContextMaps) { this.spawnActionContextMaps = spawnActionContextMaps; @@ -50,18 +50,18 @@ @Override public SpawnContinuation beginExecution( Spawn spawn, ActionExecutionContext actionExecutionContext) throws InterruptedException { - SpawnActionContext resolvedContext; + SpawnStrategy resolvedStrategy; try { - resolvedContext = resolveOne(spawn, actionExecutionContext); + resolvedStrategy = resolveOne(spawn, actionExecutionContext); } catch (ExecException e) { return SpawnContinuation.failedWithExecException(e); } - return resolvedContext.beginExecution(spawn, actionExecutionContext); + return resolvedStrategy.beginExecution(spawn, actionExecutionContext); } - private SpawnActionContext resolveOne(Spawn spawn, ActionExecutionContext actionExecutionContext) + private SpawnStrategy resolveOne(Spawn spawn, ActionExecutionContext actionExecutionContext) throws UserExecException { - List<SpawnActionContext> strategies = resolve(spawn, actionExecutionContext); + List<SpawnStrategy> strategies = resolve(spawn, actionExecutionContext); // Because the strategies are ordered by preference, we can execute the spawn with the best // possible one by simply filtering out the ones that can't execute it and then picking the @@ -70,16 +70,16 @@ } /** - * Returns the list of {@link SpawnActionContext}s that should be used to execute the given spawn. + * Returns the list of {@link SpawnStrategy}s that should be used to execute the given spawn. * - * @param spawn The spawn for which the correct {@link SpawnActionContext} should be determined. + * @param spawn The spawn for which the correct {@link SpawnStrategy} should be determined. * @param eventHandler An event handler that can be used to print messages while resolving the - * correct {@link SpawnActionContext} for the given spawn. + * correct {@link SpawnStrategy} for the given spawn. */ @VisibleForTesting - public List<SpawnActionContext> resolve( - Spawn spawn, ActionExecutionContext actionExecutionContext) throws UserExecException { - List<SpawnActionContext> strategies = + public List<SpawnStrategy> resolve(Spawn spawn, ActionExecutionContext actionExecutionContext) + throws UserExecException { + List<SpawnStrategy> strategies = spawnActionContextMaps.getSpawnActionContexts( spawn, actionExecutionContext.getEventHandler());
diff --git a/src/main/java/com/google/devtools/build/lib/exec/SpawnActionContextMaps.java b/src/main/java/com/google/devtools/build/lib/exec/SpawnActionContextMaps.java index 7b746f9..f28cdda 100644 --- a/src/main/java/com/google/devtools/build/lib/exec/SpawnActionContextMaps.java +++ b/src/main/java/com/google/devtools/build/lib/exec/SpawnActionContextMaps.java
@@ -32,9 +32,9 @@ import com.google.devtools.build.lib.actions.ActionContextMarker; import com.google.devtools.build.lib.actions.DynamicStrategyRegistry; import com.google.devtools.build.lib.actions.ExecutorInitException; -import com.google.devtools.build.lib.actions.SandboxedSpawnActionContext; +import com.google.devtools.build.lib.actions.SandboxedSpawnStrategy; import com.google.devtools.build.lib.actions.Spawn; -import com.google.devtools.build.lib.actions.SpawnActionContext; +import com.google.devtools.build.lib.actions.SpawnStrategy; import com.google.devtools.build.lib.events.Event; import com.google.devtools.build.lib.events.EventHandler; import com.google.devtools.build.lib.events.Reporter; @@ -69,30 +69,28 @@ RemoteLocalFallbackRegistry, ActionContext.ActionContextRegistry { - /** A stored entry for a {@link RegexFilter} to {@link SpawnActionContext} mapping. */ + /** A stored entry for a {@link RegexFilter} to {@link SpawnStrategy} mapping. */ @AutoValue - public abstract static class RegexFilterSpawnActionContext { + public abstract static class RegexFilterSpawnStrategy { public abstract RegexFilter regexFilter(); - public abstract ImmutableList<SpawnActionContext> spawnActionContext(); + public abstract ImmutableList<SpawnStrategy> strategies(); } - private final ImmutableSortedMap<String, List<SpawnActionContext>> mnemonicToSpawnStrategiesMap; + private final ImmutableSortedMap<String, List<SpawnStrategy>> mnemonicToSpawnStrategiesMap; private final ImmutableClassToInstanceMap<ActionContext> strategies; - private final ImmutableList<RegexFilterSpawnActionContext> spawnStrategyRegexList; - private final ImmutableMultimap<String, SandboxedSpawnActionContext> - mnemonicToRemoteDynamicStrategies; - private final ImmutableMultimap<String, SandboxedSpawnActionContext> - mnemonicToLocalDynamicStrategies; + private final ImmutableList<RegexFilterSpawnStrategy> spawnStrategyRegexList; + private final ImmutableMultimap<String, SandboxedSpawnStrategy> mnemonicToRemoteDynamicStrategies; + private final ImmutableMultimap<String, SandboxedSpawnStrategy> mnemonicToLocalDynamicStrategies; private final ImmutableMap<Class<? extends ActionContext>, ActionContext> contextMap; @Nullable private final AbstractSpawnStrategy remoteLocalFallbackStrategy; private SpawnActionContextMaps( - ImmutableSortedMap<String, List<SpawnActionContext>> mnemonicToSpawnStrategiesMap, + ImmutableSortedMap<String, List<SpawnStrategy>> mnemonicToSpawnStrategiesMap, ImmutableClassToInstanceMap<ActionContext> strategies, - ImmutableList<RegexFilterSpawnActionContext> spawnStrategyRegexList, - ImmutableMultimap<String, SandboxedSpawnActionContext> mnemonicToRemoteDynamicStrategies, - ImmutableMultimap<String, SandboxedSpawnActionContext> mnemonicToLocalDynamicStrategies, + ImmutableList<RegexFilterSpawnStrategy> spawnStrategyRegexList, + ImmutableMultimap<String, SandboxedSpawnStrategy> mnemonicToRemoteDynamicStrategies, + ImmutableMultimap<String, SandboxedSpawnStrategy> mnemonicToLocalDynamicStrategies, AbstractSpawnStrategy remoteLocalFallbackStrategy) { this.mnemonicToSpawnStrategiesMap = mnemonicToSpawnStrategiesMap; this.strategies = strategies; @@ -109,38 +107,37 @@ * <p>If the reason for selecting the context is worth mentioning to the user, logs a message * using the given {@link Reporter}. */ - List<SpawnActionContext> getSpawnActionContexts(Spawn spawn, EventHandler reporter) { + List<SpawnStrategy> getSpawnActionContexts(Spawn spawn, EventHandler reporter) { Preconditions.checkNotNull(spawn); if (!spawnStrategyRegexList.isEmpty() && spawn.getResourceOwner() != null // Don't override test strategies by --strategy_regexp for backwards compatibility. && !"TestRunner".equals(spawn.getMnemonic())) { String description = spawn.getResourceOwner().getProgressMessage(); if (description != null) { - for (RegexFilterSpawnActionContext entry : spawnStrategyRegexList) { - if (entry.regexFilter().isIncluded(description) && entry.spawnActionContext() != null) { + for (RegexFilterSpawnStrategy entry : spawnStrategyRegexList) { + if (entry.regexFilter().isIncluded(description) && entry.strategies() != null) { reporter.handle( - Event.progress( - description + " with context " + entry.spawnActionContext().toString())); - return entry.spawnActionContext(); + Event.progress(description + " with context " + entry.strategies().toString())); + return entry.strategies(); } } } } - List<SpawnActionContext> context = mnemonicToSpawnStrategiesMap.get(spawn.getMnemonic()); - if (context != null) { - return context; + List<SpawnStrategy> strategies = mnemonicToSpawnStrategiesMap.get(spawn.getMnemonic()); + if (strategies != null) { + return strategies; } return Preconditions.checkNotNull(mnemonicToSpawnStrategiesMap.get("")); } @Override - public List<SandboxedSpawnActionContext> getDynamicSpawnActionContexts( + public List<SandboxedSpawnStrategy> getDynamicSpawnActionContexts( Spawn spawn, DynamicMode dynamicMode) { - ImmutableMultimap<String, SandboxedSpawnActionContext> mnemonicToDynamicStrategies = + ImmutableMultimap<String, SandboxedSpawnStrategy> mnemonicToDynamicStrategies = dynamicMode == DynamicStrategyRegistry.DynamicMode.REMOTE ? mnemonicToRemoteDynamicStrategies : mnemonicToLocalDynamicStrategies; - return ImmutableList.<SandboxedSpawnActionContext>builder() + return ImmutableList.<SandboxedSpawnStrategy>builder() .addAll(mnemonicToDynamicStrategies.get(spawn.getMnemonic())) .addAll(mnemonicToDynamicStrategies.get("")) .build(); @@ -160,7 +157,7 @@ contextMap.put(typeToStrategy.getKey(), strategy); contextMap.put(strategy.getClass(), strategy); } - contextMap.put(SpawnActionContext.class, new ProxySpawnActionContext(this)); + contextMap.put(SpawnStrategy.class, new ProxySpawnActionContext(this)); contextMap.put(DynamicStrategyRegistry.class, this); contextMap.put(RemoteLocalFallbackRegistry.class, this); return ImmutableMap.copyOf(contextMap); @@ -179,7 +176,7 @@ // (so we respect insertion order but also instantiate them only once). LinkedHashSet<ActionContext> allContexts = new LinkedHashSet<>(strategies.values()); mnemonicToSpawnStrategiesMap.values().forEach(allContexts::addAll); - spawnStrategyRegexList.forEach(x -> allContexts.addAll(x.spawnActionContext())); + spawnStrategyRegexList.forEach(x -> allContexts.addAll(x.strategies())); return ImmutableList.copyOf(allContexts); } @@ -195,11 +192,11 @@ @Override public void notifyUsedDynamic(ActionContextRegistry actionContextRegistry) { - for (SandboxedSpawnActionContext context : mnemonicToRemoteDynamicStrategies.values()) { + for (SandboxedSpawnStrategy context : mnemonicToRemoteDynamicStrategies.values()) { context.usedContext(actionContextRegistry); } - for (SandboxedSpawnActionContext context : mnemonicToLocalDynamicStrategies.values()) { + for (SandboxedSpawnStrategy context : mnemonicToLocalDynamicStrategies.values()) { context.usedContext(actionContextRegistry); } } @@ -210,7 +207,7 @@ * <p>Prints out debug information about the mappings. */ void debugPrintSpawnActionContextMaps(Reporter reporter) { - for (Entry<String, List<SpawnActionContext>> entry : mnemonicToSpawnStrategiesMap.entrySet()) { + for (Entry<String, List<SpawnStrategy>> entry : mnemonicToSpawnStrategiesMap.entrySet()) { List<String> strategyNames = entry.getValue().stream() .map(spawnActionContext -> spawnActionContext.getClass().getSimpleName()) @@ -236,20 +233,19 @@ } } - for (RegexFilterSpawnActionContext entry : spawnStrategyRegexList) { + for (RegexFilterSpawnStrategy entry : spawnStrategyRegexList) { reporter.handle( Event.info( String.format( "SpawnActionContextMap: \"%s\" = %s", - entry.regexFilter().toString(), - entry.spawnActionContext().getClass().getSimpleName()))); + entry.regexFilter().toString(), entry.strategies().getClass().getSimpleName()))); } } @VisibleForTesting public static SpawnActionContextMaps createStub( Map<Class<? extends ActionContext>, ActionContext> strategies, - Map<String, List<SpawnActionContext>> spawnStrategyMnemonicMap) { + Map<String, List<SpawnStrategy>> spawnStrategyMnemonicMap) { return new SpawnActionContextMaps( ImmutableSortedMap.copyOf(spawnStrategyMnemonicMap, String.CASE_INSENSITIVE_ORDER), ImmutableClassToInstanceMap.copyOf(strategies), @@ -375,28 +371,28 @@ public SpawnActionContextMaps build() throws ExecutorInitException { StrategyConverter strategyConverter = new StrategyConverter(actionContexts); - ImmutableSortedMap.Builder<String, List<SpawnActionContext>> spawnStrategyMap = + ImmutableSortedMap.Builder<String, List<SpawnStrategy>> spawnStrategyMap = ImmutableSortedMap.orderedBy(String.CASE_INSENSITIVE_ORDER); HashMap<Class<? extends ActionContext>, ActionContext> strategies = new HashMap<>(); - ImmutableList.Builder<RegexFilterSpawnActionContext> spawnStrategyRegexList = + ImmutableList.Builder<RegexFilterSpawnStrategy> spawnStrategyRegexList = ImmutableList.builder(); for (String mnemonic : strategyByMnemonicMap.keySet()) { - ImmutableList.Builder<SpawnActionContext> contexts = ImmutableList.builder(); + ImmutableList.Builder<SpawnStrategy> spawnStrategies = ImmutableList.builder(); Set<String> strategiesForMnemonic = strategyByMnemonicMap.get(mnemonic); for (String strategy : strategiesForMnemonic) { - SpawnActionContext context = - strategyConverter.getStrategy(SpawnActionContext.class, strategy); - if (context == null) { + SpawnStrategy spawnStrategy = + strategyConverter.getStrategy(SpawnStrategy.class, strategy); + if (spawnStrategy == null) { String strategyOrNull = Strings.emptyToNull(strategy); throw makeExceptionForInvalidStrategyValue( strategy, Joiner.on(' ').skipNulls().join(strategyOrNull, "spawn"), - strategyConverter.getValidValues(SpawnActionContext.class)); + strategyConverter.getValidValues(SpawnStrategy.class)); } - contexts.add(context); + spawnStrategies.add(spawnStrategy); } - spawnStrategyMap.put(mnemonic, contexts.build()); + spawnStrategyMap.put(mnemonic, spawnStrategies.build()); } Set<ActionContext> seenContext = new HashSet<>(); @@ -417,35 +413,34 @@ } for (RegexFilterStrategy entry : strategyByRegexpBuilder.build()) { - ImmutableList.Builder<SpawnActionContext> contexts = ImmutableList.builder(); + ImmutableList.Builder<SpawnStrategy> spawnStrategies = ImmutableList.builder(); List<String> strategiesForRegex = entry.strategy(); for (String strategy : strategiesForRegex) { - SpawnActionContext context = - strategyConverter.getStrategy(SpawnActionContext.class, strategy); - if (context == null) { + SpawnStrategy spawnStrategy = + strategyConverter.getStrategy(SpawnStrategy.class, strategy); + if (spawnStrategy == null) { strategy = Strings.emptyToNull(strategy); throw makeExceptionForInvalidStrategyValue( entry.regexFilter().toString(), Joiner.on(' ').skipNulls().join(strategy, "spawn"), - strategyConverter.getValidValues(SpawnActionContext.class)); + strategyConverter.getValidValues(SpawnStrategy.class)); } - contexts.add(context); + spawnStrategies.add(spawnStrategy); } spawnStrategyRegexList.add( - new AutoValue_SpawnActionContextMaps_RegexFilterSpawnActionContext( - entry.regexFilter(), contexts.build())); + new AutoValue_SpawnActionContextMaps_RegexFilterSpawnStrategy( + entry.regexFilter(), spawnStrategies.build())); } AbstractSpawnStrategy remoteLocalFallbackStrategy = null; if (remoteLocalFallbackStrategyName != null) { - SpawnActionContext strategy = - strategyConverter.getStrategy( - SpawnActionContext.class, remoteLocalFallbackStrategyName); + SpawnStrategy strategy = + strategyConverter.getStrategy(SpawnStrategy.class, remoteLocalFallbackStrategyName); if (!(strategy instanceof AbstractSpawnStrategy)) { throw makeExceptionForInvalidStrategyValue( remoteLocalFallbackStrategyName, "remote local fallback", - strategyConverter.getValidValues(SpawnActionContext.class, "remote")); + strategyConverter.getValidValues(SpawnStrategy.class, "remote")); } remoteLocalFallbackStrategy = (AbstractSpawnStrategy) strategy; } @@ -459,11 +454,11 @@ remoteLocalFallbackStrategy); } - private ImmutableMultimap<String, SandboxedSpawnActionContext> toActionContexts( + private ImmutableMultimap<String, SandboxedSpawnStrategy> toActionContexts( StrategyConverter strategyConverter, LinkedHashMultimap<String, String> dynamicStrategyByMnemonicMap) throws ExecutorInitException { - ImmutableMultimap.Builder<String, SandboxedSpawnActionContext> mnemonicToStrategies = + ImmutableMultimap.Builder<String, SandboxedSpawnStrategy> mnemonicToStrategies = ImmutableMultimap.builder(); for (Entry<String, Collection<String>> mnemonicToIdentifiers : dynamicStrategyByMnemonicMap.asMap().entrySet()) { @@ -471,20 +466,19 @@ if (identifier.isEmpty()) { continue; } - SpawnActionContext context = - strategyConverter.getStrategy(SpawnActionContext.class, identifier); - if (context == null) { + SpawnStrategy strategy = strategyConverter.getStrategy(SpawnStrategy.class, identifier); + if (strategy == null) { throw makeExceptionForInvalidStrategyValue( identifier, Joiner.on(' ').skipNulls().join(Strings.emptyToNull(identifier), "spawn"), - strategyConverter.getValidValues(SpawnActionContext.class)); + strategyConverter.getValidValues(SpawnStrategy.class)); } - if (!(context instanceof SandboxedSpawnActionContext)) { + if (!(strategy instanceof SandboxedSpawnStrategy)) { throw new ExecutorInitException( "Requested strategy " + identifier + " exists but does not support sandboxing"); } mnemonicToStrategies.put( - mnemonicToIdentifiers.getKey(), (SandboxedSpawnActionContext) context); + mnemonicToIdentifiers.getKey(), (SandboxedSpawnStrategy) strategy); } } return mnemonicToStrategies.build();
diff --git a/src/main/java/com/google/devtools/build/lib/exec/StandaloneTestStrategy.java b/src/main/java/com/google/devtools/build/lib/exec/StandaloneTestStrategy.java index 99cf4d3..79cdd77 100644 --- a/src/main/java/com/google/devtools/build/lib/exec/StandaloneTestStrategy.java +++ b/src/main/java/com/google/devtools/build/lib/exec/StandaloneTestStrategy.java
@@ -29,9 +29,9 @@ import com.google.devtools.build.lib.actions.ResourceSet; import com.google.devtools.build.lib.actions.SimpleSpawn; import com.google.devtools.build.lib.actions.Spawn; -import com.google.devtools.build.lib.actions.SpawnActionContext; import com.google.devtools.build.lib.actions.SpawnContinuation; import com.google.devtools.build.lib.actions.SpawnResult; +import com.google.devtools.build.lib.actions.SpawnStrategy; import com.google.devtools.build.lib.actions.TestExecException; import com.google.devtools.build.lib.analysis.actions.SpawnAction; import com.google.devtools.build.lib.analysis.test.TestConfiguration; @@ -305,7 +305,7 @@ long startTimeMillis = actionExecutionContext.getClock().currentTimeMillis(); SpawnContinuation spawnContinuation = actionExecutionContext - .getContext(SpawnActionContext.class) + .getContext(SpawnStrategy.class) .beginExecution(spawn, actionExecutionContext.withFileOutErr(testOutErr)); return new BazelTestAttemptContinuation( testAction, @@ -604,14 +604,13 @@ && fileOutErr.getOutputPath().exists() && !xmlOutputPath.exists()) { Spawn xmlGeneratingSpawn = createXmlGeneratingSpawn(testAction, primaryResult); - SpawnActionContext spawnActionContext = - actionExecutionContext.getContext(SpawnActionContext.class); + SpawnStrategy strategy = actionExecutionContext.getContext(SpawnStrategy.class); // We treat all failures to generate the test.xml here as catastrophic, and won't rerun // the test if this fails. We redirect the output to a temporary file. FileOutErr xmlSpawnOutErr = actionExecutionContext.getFileOutErr().childOutErr(); try { SpawnContinuation xmlContinuation = - spawnActionContext.beginExecution( + strategy.beginExecution( xmlGeneratingSpawn, actionExecutionContext.withFileOutErr(xmlSpawnOutErr)); return new BazelXmlCreationContinuation( resolvedPaths, xmlSpawnOutErr, builder, spawnResults, xmlContinuation);
diff --git a/src/main/java/com/google/devtools/build/lib/includescanning/SpawnIncludeScanner.java b/src/main/java/com/google/devtools/build/lib/includescanning/SpawnIncludeScanner.java index 4833130..6252111 100644 --- a/src/main/java/com/google/devtools/build/lib/includescanning/SpawnIncludeScanner.java +++ b/src/main/java/com/google/devtools/build/lib/includescanning/SpawnIncludeScanner.java
@@ -39,9 +39,9 @@ import com.google.devtools.build.lib.actions.RunfilesSupplier; import com.google.devtools.build.lib.actions.SimpleSpawn; import com.google.devtools.build.lib.actions.Spawn; -import com.google.devtools.build.lib.actions.SpawnActionContext; import com.google.devtools.build.lib.actions.SpawnContinuation; import com.google.devtools.build.lib.actions.SpawnResult; +import com.google.devtools.build.lib.actions.SpawnStrategy; import com.google.devtools.build.lib.analysis.platform.PlatformInfo; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; @@ -374,11 +374,11 @@ // Don't share the originalOutErr across spawnGrep calls. Doing so would not be thread-safe. FileOutErr originalOutErr = actionExecutionContext.getFileOutErr(); FileOutErr grepOutErr = originalOutErr.childOutErr(); - SpawnActionContext context = actionExecutionContext.getContext(SpawnActionContext.class); + SpawnStrategy strategy = actionExecutionContext.getContext(SpawnStrategy.class); ActionExecutionContext spawnContext = actionExecutionContext.withFileOutErr(grepOutErr); List<SpawnResult> results; try { - results = context.exec(spawn, spawnContext); + results = strategy.exec(spawn, spawnContext); dump(spawnContext, actionExecutionContext); } catch (ExecException e) { dump(spawnContext, actionExecutionContext); @@ -500,7 +500,7 @@ SpawnContinuation spawnContinuation; try { spawnContinuation = - grepContext.getContext(SpawnActionContext.class).beginExecution(spawn, grepContext); + grepContext.getContext(SpawnStrategy.class).beginExecution(spawn, grepContext); } catch (InterruptedException e) { dump(grepContext, actionExecutionContext); return Futures.immediateCancelledFuture();
diff --git a/src/main/java/com/google/devtools/build/lib/remote/RemoteActionContextProvider.java b/src/main/java/com/google/devtools/build/lib/remote/RemoteActionContextProvider.java index 8b8dc5a..0a0ed81 100644 --- a/src/main/java/com/google/devtools/build/lib/remote/RemoteActionContextProvider.java +++ b/src/main/java/com/google/devtools/build/lib/remote/RemoteActionContextProvider.java
@@ -22,7 +22,7 @@ import com.google.devtools.build.lib.actions.ActionGraph; import com.google.devtools.build.lib.actions.ActionInput; import com.google.devtools.build.lib.actions.ExecutorInitException; -import com.google.devtools.build.lib.actions.SpawnActionContext; +import com.google.devtools.build.lib.actions.SpawnStrategy; import com.google.devtools.build.lib.analysis.ArtifactsToOwnerLabels; import com.google.devtools.build.lib.exec.ExecutionOptions; import com.google.devtools.build.lib.exec.ExecutorBuilder; @@ -117,9 +117,7 @@ logDir, filesToDownload); executorBuilder.addActionContext( - SpawnActionContext.class, - new RemoteSpawnStrategy(env.getExecRoot(), spawnRunner), - "remote"); + SpawnStrategy.class, new RemoteSpawnStrategy(env.getExecRoot(), spawnRunner), "remote"); } }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java index 22d01bc..d355fbf 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
@@ -47,9 +47,9 @@ import com.google.devtools.build.lib.actions.ResourceSet; import com.google.devtools.build.lib.actions.SimpleSpawn; import com.google.devtools.build.lib.actions.Spawn; -import com.google.devtools.build.lib.actions.SpawnActionContext; import com.google.devtools.build.lib.actions.SpawnContinuation; import com.google.devtools.build.lib.actions.SpawnResult; +import com.google.devtools.build.lib.actions.SpawnStrategy; import com.google.devtools.build.lib.actions.extra.CppCompileInfo; import com.google.devtools.build.lib.actions.extra.EnvironmentVariable; import com.google.devtools.build.lib.actions.extra.ExtraActionInfo; @@ -1379,9 +1379,7 @@ } SpawnContinuation spawnContinuation = - actionExecutionContext - .getContext(SpawnActionContext.class) - .beginExecution(spawn, spawnContext); + actionExecutionContext.getContext(SpawnStrategy.class).beginExecution(spawn, spawnContext); return new CppCompileActionContinuation( actionExecutionContext, spawnContext,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java index 8fd246b..58ef75e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java
@@ -42,8 +42,8 @@ import com.google.devtools.build.lib.actions.ResourceSet; import com.google.devtools.build.lib.actions.SimpleSpawn; import com.google.devtools.build.lib.actions.Spawn; -import com.google.devtools.build.lib.actions.SpawnActionContext; import com.google.devtools.build.lib.actions.SpawnContinuation; +import com.google.devtools.build.lib.actions.SpawnStrategy; import com.google.devtools.build.lib.actions.extra.CppLinkInfo; import com.google.devtools.build.lib.actions.extra.ExtraActionInfo; import com.google.devtools.build.lib.analysis.actions.ActionConstructionContext; @@ -314,7 +314,7 @@ Spawn spawn = createSpawn(actionExecutionContext); SpawnContinuation spawnContinuation = actionExecutionContext - .getContext(SpawnActionContext.class) + .getContext(SpawnStrategy.class) .beginExecution(spawn, actionExecutionContext); return new CppLinkActionContinuation(actionExecutionContext, spawnContinuation); }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java index a0c303f..683f24a 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java
@@ -31,8 +31,8 @@ import com.google.devtools.build.lib.actions.ExecException; import com.google.devtools.build.lib.actions.ResourceSet; import com.google.devtools.build.lib.actions.Spawn; -import com.google.devtools.build.lib.actions.SpawnActionContext; import com.google.devtools.build.lib.actions.SpawnResult; +import com.google.devtools.build.lib.actions.SpawnStrategy; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadCompatible; @@ -137,8 +137,8 @@ byte[] dotDContents = null; try { Spawn spawn = createSpawn(actionExecutionContext.getClientEnv()); - SpawnActionContext context = actionExecutionContext.getContext(SpawnActionContext.class); - spawnResults = context.exec(spawn, actionExecutionContext); + SpawnStrategy strategy = actionExecutionContext.getContext(SpawnStrategy.class); + spawnResults = strategy.exec(spawn, actionExecutionContext); // The SpawnActionContext guarantees that the first list entry is the successful one. dotDContents = getDotDContents(spawnResults.get(0)); } catch (ExecException e) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java index d96e948..a90cd3e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
@@ -47,9 +47,9 @@ import com.google.devtools.build.lib.actions.ResourceSet; import com.google.devtools.build.lib.actions.RunfilesSupplier; import com.google.devtools.build.lib.actions.Spawn; -import com.google.devtools.build.lib.actions.SpawnActionContext; import com.google.devtools.build.lib.actions.SpawnContinuation; import com.google.devtools.build.lib.actions.SpawnResult; +import com.google.devtools.build.lib.actions.SpawnStrategy; import com.google.devtools.build.lib.actions.extra.ExtraActionInfo; import com.google.devtools.build.lib.analysis.actions.CustomCommandLine; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; @@ -339,7 +339,7 @@ } SpawnContinuation spawnContinuation = actionExecutionContext - .getContext(SpawnActionContext.class) + .getContext(SpawnStrategy.class) .beginExecution(spawn, actionExecutionContext); return new JavaActionContinuation(actionExecutionContext, reducedClasspath, spawnContinuation); } @@ -604,7 +604,7 @@ } SpawnContinuation fallbackContinuation = actionExecutionContext - .getContext(SpawnActionContext.class) + .getContext(SpawnStrategy.class) .beginExecution(spawn, actionExecutionContext); return new JavaFallbackActionContinuation( actionExecutionContext, results, fallbackContinuation);
diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/SandboxModule.java b/src/main/java/com/google/devtools/build/lib/sandbox/SandboxModule.java index fb29c4f..bd042e7 100644 --- a/src/main/java/com/google/devtools/build/lib/sandbox/SandboxModule.java +++ b/src/main/java/com/google/devtools/build/lib/sandbox/SandboxModule.java
@@ -23,8 +23,8 @@ import com.google.devtools.build.lib.actions.ExecException; import com.google.devtools.build.lib.actions.ExecutorInitException; import com.google.devtools.build.lib.actions.Spawn; -import com.google.devtools.build.lib.actions.SpawnActionContext; import com.google.devtools.build.lib.actions.SpawnResult; +import com.google.devtools.build.lib.actions.SpawnStrategy; import com.google.devtools.build.lib.buildtool.BuildRequest; import com.google.devtools.build.lib.buildtool.buildevent.BuildCompleteEvent; import com.google.devtools.build.lib.buildtool.buildevent.BuildInterruptedEvent; @@ -276,7 +276,7 @@ treeDeleter)); spawnRunners.add(spawnRunner); builder.addActionContext( - SpawnActionContext.class, + SpawnStrategy.class, new ProcessWrapperSandboxedStrategy(cmdEnv.getExecRoot(), spawnRunner), "sandboxed", "processwrapper-sandbox"); @@ -304,7 +304,7 @@ treeDeleter)); spawnRunners.add(spawnRunner); builder.addActionContext( - SpawnActionContext.class, + SpawnStrategy.class, new DockerSandboxedStrategy(cmdEnv.getExecRoot(), spawnRunner), "docker"); } @@ -328,7 +328,7 @@ treeDeleter)); spawnRunners.add(spawnRunner); builder.addActionContext( - SpawnActionContext.class, + SpawnStrategy.class, new LinuxSandboxedStrategy(cmdEnv.getExecRoot(), spawnRunner), "sandboxed", "linux-sandbox"); @@ -348,7 +348,7 @@ treeDeleter)); spawnRunners.add(spawnRunner); builder.addActionContext( - SpawnActionContext.class, + SpawnStrategy.class, new DarwinSandboxedStrategy(cmdEnv.getExecRoot(), spawnRunner), "sandboxed", "darwin-sandbox"); @@ -361,7 +361,7 @@ new WindowsSandboxedSpawnRunner(cmdEnv, timeoutKillDelay, windowsSandboxPath)); spawnRunners.add(spawnRunner); builder.addActionContext( - SpawnActionContext.class, + SpawnStrategy.class, new WindowsSandboxedStrategy(cmdEnv.getExecRoot(), spawnRunner), "sandboxed", "windows-sandbox"); @@ -373,7 +373,7 @@ || windowsSandboxSupported) { // This makes the "sandboxed" strategy available via --spawn_strategy=sandboxed, // but it is not necessarily the default. - builder.addStrategyByContext(SpawnActionContext.class, "sandboxed"); + builder.addStrategyByContext(SpawnStrategy.class, "sandboxed"); // This makes the "sandboxed" strategy the default Spawn strategy, unless it is // overridden by a later BlazeModule.
diff --git a/src/main/java/com/google/devtools/build/lib/standalone/StandaloneModule.java b/src/main/java/com/google/devtools/build/lib/standalone/StandaloneModule.java index fa3e693..8c0193f 100644 --- a/src/main/java/com/google/devtools/build/lib/standalone/StandaloneModule.java +++ b/src/main/java/com/google/devtools/build/lib/standalone/StandaloneModule.java
@@ -14,7 +14,7 @@ package com.google.devtools.build.lib.standalone; import com.google.common.collect.ImmutableList; -import com.google.devtools.build.lib.actions.SpawnActionContext; +import com.google.devtools.build.lib.actions.SpawnStrategy; import com.google.devtools.build.lib.analysis.actions.FileWriteActionContext; import com.google.devtools.build.lib.analysis.actions.LocalTemplateExpansionStrategy; import com.google.devtools.build.lib.analysis.actions.TemplateExpansionContext; @@ -94,7 +94,7 @@ // could potentially be used and a spawnActionContext doesn't specify which one it wants, the // last one from strategies list will be used builder.addActionContext( - SpawnActionContext.class, + SpawnStrategy.class, new StandaloneSpawnStrategy(env.getExecRoot(), localSpawnRunner), "standalone", "local"); @@ -111,6 +111,6 @@ // This makes the "standalone" strategy available via --spawn_strategy=standalone, but it is not // necessarily the default. - builder.addStrategyByContext(SpawnActionContext.class, "standalone"); + builder.addStrategyByContext(SpawnStrategy.class, "standalone"); } }
diff --git a/src/main/java/com/google/devtools/build/lib/worker/WorkerModule.java b/src/main/java/com/google/devtools/build/lib/worker/WorkerModule.java index 1181260..4d521cd 100644 --- a/src/main/java/com/google/devtools/build/lib/worker/WorkerModule.java +++ b/src/main/java/com/google/devtools/build/lib/worker/WorkerModule.java
@@ -18,7 +18,7 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMultimap; import com.google.common.eventbus.Subscribe; -import com.google.devtools.build.lib.actions.SpawnActionContext; +import com.google.devtools.build.lib.actions.SpawnStrategy; import com.google.devtools.build.lib.buildtool.BuildRequest; import com.google.devtools.build.lib.buildtool.buildevent.BuildCompleteEvent; import com.google.devtools.build.lib.buildtool.buildevent.BuildInterruptedEvent; @@ -158,12 +158,10 @@ // TODO(buchgr): Replace singleton by a command-scoped RunfilesTreeUpdater RunfilesTreeUpdater.INSTANCE); builder.addActionContext( - SpawnActionContext.class, - new WorkerSpawnStrategy(env.getExecRoot(), spawnRunner), - "worker"); + SpawnStrategy.class, new WorkerSpawnStrategy(env.getExecRoot(), spawnRunner), "worker"); - builder.addStrategyByContext(SpawnActionContext.class, "standalone"); - builder.addStrategyByContext(SpawnActionContext.class, "worker"); + builder.addStrategyByContext(SpawnStrategy.class, "standalone"); + builder.addStrategyByContext(SpawnStrategy.class, "worker"); } private static SpawnRunner createFallbackRunner(
diff --git a/src/test/java/com/google/devtools/build/lib/dynamic/DynamicSpawnStrategyTest.java b/src/test/java/com/google/devtools/build/lib/dynamic/DynamicSpawnStrategyTest.java index 1176f2e..ef01393 100644 --- a/src/test/java/com/google/devtools/build/lib/dynamic/DynamicSpawnStrategyTest.java +++ b/src/test/java/com/google/devtools/build/lib/dynamic/DynamicSpawnStrategyTest.java
@@ -37,10 +37,10 @@ import com.google.devtools.build.lib.actions.Executor; import com.google.devtools.build.lib.actions.ExecutorInitException; import com.google.devtools.build.lib.actions.ResourceSet; -import com.google.devtools.build.lib.actions.SandboxedSpawnActionContext; +import com.google.devtools.build.lib.actions.SandboxedSpawnStrategy; import com.google.devtools.build.lib.actions.Spawn; -import com.google.devtools.build.lib.actions.SpawnActionContext; import com.google.devtools.build.lib.actions.SpawnResult; +import com.google.devtools.build.lib.actions.SpawnStrategy; import com.google.devtools.build.lib.actions.UserExecException; import com.google.devtools.build.lib.actions.util.ActionsTestUtil; import com.google.devtools.build.lib.actions.util.ActionsTestUtil.NullAction; @@ -116,7 +116,7 @@ * <p>All the logic in here must be applicable to all tests. If any test needs to special-case * some aspect of this logic, then it must extend this subclass as necessary. */ - private class MockSpawnStrategy implements SandboxedSpawnActionContext { + private class MockSpawnStrategy implements SandboxedSpawnStrategy { /** Identifier of this class for error reporting purposes. */ private final String name; @@ -318,12 +318,11 @@ ExecutorBuilder executorBuilder = new ExecutorBuilder() - .addActionContext(SpawnActionContext.class, localStrategy, "mock-local") - .addActionContext(SpawnActionContext.class, remoteStrategy, "mock-remote"); + .addActionContext(SpawnStrategy.class, localStrategy, "mock-local") + .addActionContext(SpawnStrategy.class, remoteStrategy, "mock-remote"); if (sandboxedStrategy != null) { - executorBuilder.addActionContext( - SpawnActionContext.class, sandboxedStrategy, "mock-sandboxed"); + executorBuilder.addActionContext(SpawnStrategy.class, sandboxedStrategy, "mock-sandboxed"); } new DynamicExecutionModule(executorService).initStrategies(executorBuilder, options); @@ -358,7 +357,7 @@ checkState(optionalContext.isPresent(), "Expected module to register a dynamic strategy"); return new AutoValue_DynamicSpawnStrategyTest_StrategyAndContext( - (SpawnActionContext) optionalContext.get(), actionExecutionContext); + (SpawnStrategy) optionalContext.get(), actionExecutionContext); } private static class NullActionWithMnemonic extends NullAction { @@ -1019,7 +1018,7 @@ @AutoValue abstract static class StrategyAndContext { - abstract SpawnActionContext strategy(); + abstract SpawnStrategy strategy(); abstract ActionExecutionContext context();
diff --git a/src/test/java/com/google/devtools/build/lib/exec/BlazeExecutorTest.java b/src/test/java/com/google/devtools/build/lib/exec/BlazeExecutorTest.java index dfb9980..aa88c4c 100644 --- a/src/test/java/com/google/devtools/build/lib/exec/BlazeExecutorTest.java +++ b/src/test/java/com/google/devtools/build/lib/exec/BlazeExecutorTest.java
@@ -21,8 +21,8 @@ import com.google.common.eventbus.EventBus; import com.google.devtools.build.lib.actions.ActionExecutionContext; import com.google.devtools.build.lib.actions.Spawn; -import com.google.devtools.build.lib.actions.SpawnActionContext; import com.google.devtools.build.lib.actions.SpawnResult; +import com.google.devtools.build.lib.actions.SpawnStrategy; import com.google.devtools.build.lib.analysis.BlazeDirectories; import com.google.devtools.build.lib.analysis.ServerDirectories; import com.google.devtools.build.lib.events.Event; @@ -79,7 +79,7 @@ .setReporter(reporter) .setOptionsParser(parser) .setExecution("fake", "fake") - .addStrategy(SpawnActionContext.class, new FakeSpawnStrategy(), "fake") + .addStrategy(SpawnStrategy.class, new FakeSpawnStrategy(), "fake") .build(); Event event = @@ -96,7 +96,7 @@ .contains("\"fake\" = [" + strategy.getClass().getSimpleName() + "]"); } - private static class FakeSpawnStrategy implements SpawnActionContext { + private static class FakeSpawnStrategy implements SpawnStrategy { @Override public ImmutableList<SpawnResult> exec(
diff --git a/src/test/java/com/google/devtools/build/lib/exec/SpawnActionContextMapsTest.java b/src/test/java/com/google/devtools/build/lib/exec/SpawnActionContextMapsTest.java index e34b58e..508ad07 100644 --- a/src/test/java/com/google/devtools/build/lib/exec/SpawnActionContextMapsTest.java +++ b/src/test/java/com/google/devtools/build/lib/exec/SpawnActionContextMapsTest.java
@@ -22,8 +22,8 @@ import com.google.devtools.build.lib.actions.ActionExecutionMetadata; import com.google.devtools.build.lib.actions.ExecException; import com.google.devtools.build.lib.actions.Spawn; -import com.google.devtools.build.lib.actions.SpawnActionContext; import com.google.devtools.build.lib.actions.SpawnResult; +import com.google.devtools.build.lib.actions.SpawnStrategy; import com.google.devtools.build.lib.events.Reporter; import com.google.devtools.build.lib.testutil.Suite; import com.google.devtools.build.lib.testutil.TestSpec; @@ -52,8 +52,8 @@ public void setUp() { builder = new SpawnActionContextMaps.Builder() - .addContext(SpawnActionContext.class, ac1, "ac1") - .addContext(SpawnActionContext.class, ac2, "ac2"); + .addContext(SpawnStrategy.class, ac1, "ac1") + .addContext(SpawnStrategy.class, ac2, "ac2"); } @Test @@ -61,8 +61,7 @@ builder.strategyByMnemonicMap().put("Spawn1", "ac1"); builder.strategyByMnemonicMap().put("Spawn1", "ac2"); SpawnActionContextMaps maps = builder.build(); - List<SpawnActionContext> result = - maps.getSpawnActionContexts(mockSpawn("Spawn1", null), reporter); + List<SpawnStrategy> result = maps.getSpawnActionContexts(mockSpawn("Spawn1", null), reporter); assertThat(result).containsExactly(ac1, ac2); } @@ -71,8 +70,7 @@ builder.strategyByMnemonicMap().put("Spawn1", ""); builder.strategyByMnemonicMap().put("", "ac2"); SpawnActionContextMaps maps = builder.build(); - List<SpawnActionContext> result = - maps.getSpawnActionContexts(mockSpawn("Spawn1", null), reporter); + List<SpawnStrategy> result = maps.getSpawnActionContexts(mockSpawn("Spawn1", null), reporter); assertThat(result).containsExactly(ac2); } @@ -82,7 +80,7 @@ builder.addStrategyByRegexp(converter.convert("foo/bar"), ImmutableList.of("ac2")); SpawnActionContextMaps maps = builder.build(); - List<SpawnActionContext> result = + List<SpawnStrategy> result = maps.getSpawnActionContexts(mockSpawn(null, "Doing something with foo/bar/baz"), reporter); assertThat(result).containsExactly(ac1); @@ -94,7 +92,7 @@ builder.addStrategyByRegexp(converter.convert("foo/bar"), ImmutableList.of("ac2")); SpawnActionContextMaps maps = builder.build(); - List<SpawnActionContext> result = + List<SpawnStrategy> result = maps.getSpawnActionContexts( mockSpawn("Spawn1", "Doing something with foo/bar/baz"), reporter); @@ -117,7 +115,7 @@ return mockSpawn; } - private static class AC1 implements SpawnActionContext { + private static class AC1 implements SpawnStrategy { @Override public ImmutableList<SpawnResult> exec( Spawn spawn, ActionExecutionContext actionExecutionContext) @@ -131,7 +129,7 @@ } } - private static class AC2 implements SpawnActionContext { + private static class AC2 implements SpawnStrategy { @Override public ImmutableList<SpawnResult> exec( Spawn spawn, ActionExecutionContext actionExecutionContext)
diff --git a/src/test/java/com/google/devtools/build/lib/exec/StandaloneTestStrategyTest.java b/src/test/java/com/google/devtools/build/lib/exec/StandaloneTestStrategyTest.java index 48fbf61..c1e0d02 100644 --- a/src/test/java/com/google/devtools/build/lib/exec/StandaloneTestStrategyTest.java +++ b/src/test/java/com/google/devtools/build/lib/exec/StandaloneTestStrategyTest.java
@@ -33,10 +33,10 @@ import com.google.devtools.build.lib.actions.ActionKeyContext; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.Spawn; -import com.google.devtools.build.lib.actions.SpawnActionContext; import com.google.devtools.build.lib.actions.SpawnContinuation; import com.google.devtools.build.lib.actions.SpawnResult; import com.google.devtools.build.lib.actions.SpawnResult.Status; +import com.google.devtools.build.lib.actions.SpawnStrategy; import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.analysis.test.TestActionContext; import com.google.devtools.build.lib.analysis.test.TestProvider; @@ -91,10 +91,9 @@ } private class FakeActionExecutionContext extends ActionExecutionContext { - private final SpawnActionContext spawnActionContext; + private final SpawnStrategy spawnActionContext; - public FakeActionExecutionContext( - FileOutErr fileOutErr, SpawnActionContext spawnActionContext) { + public FakeActionExecutionContext(FileOutErr fileOutErr, SpawnStrategy spawnActionContext) { super( /*executor=*/ null, /*actionInputFileCache=*/ null, @@ -120,7 +119,7 @@ @Override @Nullable public <T extends ActionContext> T getContext(Class<T> type) { - return SpawnActionContext.class.equals(type) ? type.cast(spawnActionContext) : null; + return SpawnStrategy.class.equals(type) ? type.cast(spawnActionContext) : null; } @Override @@ -139,7 +138,7 @@ } } - @Mock private SpawnActionContext spawnActionContext; + @Mock private SpawnStrategy spawnActionContext; private StoredEventHandler storedEvents = new StoredEventHandler();
diff --git a/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java b/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java index af2e899..7e7dc1e 100644 --- a/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java +++ b/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java
@@ -34,8 +34,8 @@ import com.google.devtools.build.lib.actions.ResourceSet; import com.google.devtools.build.lib.actions.SimpleSpawn; import com.google.devtools.build.lib.actions.Spawn; -import com.google.devtools.build.lib.actions.SpawnActionContext; import com.google.devtools.build.lib.actions.SpawnResult; +import com.google.devtools.build.lib.actions.SpawnStrategy; import com.google.devtools.build.lib.actions.util.ActionsTestUtil; import com.google.devtools.build.lib.analysis.BlazeDirectories; import com.google.devtools.build.lib.analysis.ServerDirectories; @@ -196,7 +196,7 @@ @Test public void testBinTrueExecutesFine() throws Exception { Spawn spawn = createSpawn(getTrueCommand()); - executor.getContext(SpawnActionContext.class).exec(spawn, createContext()); + executor.getContext(SpawnStrategy.class).exec(spawn, createContext()); if (OS.getCurrent() != OS.WINDOWS) { assertThat(out()).isEmpty(); @@ -205,7 +205,7 @@ } private List<SpawnResult> run(Spawn spawn) throws Exception { - return executor.getContext(SpawnActionContext.class).exec(spawn, createContext()); + return executor.getContext(SpawnStrategy.class).exec(spawn, createContext()); } private ActionExecutionContext createContext() {