diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build')
38 files changed, 227 insertions, 221 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ActionExecutionContext.java b/src/main/java/com/google/devtools/build/lib/actions/ActionExecutionContext.java index e8762ef945..5fc975154e 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/ActionExecutionContext.java +++ b/src/main/java/com/google/devtools/build/lib/actions/ActionExecutionContext.java @@ -15,12 +15,21 @@ package com.google.devtools.build.lib.actions; import com.google.common.collect.ImmutableMap; +import com.google.common.eventbus.EventBus; import com.google.devtools.build.lib.actions.Artifact.ArtifactExpander; +import com.google.devtools.build.lib.actions.Executor.ActionContext; import com.google.devtools.build.lib.actions.cache.MetadataHandler; +import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.events.Event; +import com.google.devtools.build.lib.events.EventHandler; +import com.google.devtools.build.lib.events.EventKind; +import com.google.devtools.build.lib.util.Clock; import com.google.devtools.build.lib.util.Preconditions; import com.google.devtools.build.lib.util.io.FileOutErr; +import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.skyframe.SkyFunction; import com.google.devtools.build.skyframe.SkyFunction.Environment; +import com.google.devtools.common.options.OptionsClassProvider; import java.io.Closeable; import java.io.IOException; import java.util.Map; @@ -110,8 +119,74 @@ public class ActionExecutionContext implements Closeable { return metadataHandler; } - public Executor getExecutor() { - return executor; + public Path getExecRoot() { + return executor.getExecRoot(); + } + + /** + * Returns whether failures should have verbose error messages. + */ + public boolean getVerboseFailures() { + return executor.getVerboseFailures(); + } + + /** + * Returns the command line options of the Blaze command being executed. + */ + public OptionsClassProvider getOptions() { + return executor.getOptions(); + } + + public Clock getClock() { + return executor.getClock(); + } + + public EventBus getEventBus() { + return executor.getEventBus(); + } + + public EventHandler getEventHandler() { + return executor.getEventHandler(); + } + + /** + * Looks up and returns an action context implementation of the given interface type. + */ + public <T extends ActionContext> T getContext(Class<? extends T> type) { + return executor.getContext(type); + } + + /** + * Returns the action context implementation for spawn actions with a given mnemonic. + */ + public SpawnActionContext getSpawnActionContext(String mnemonic) { + return executor.getSpawnActionContext(mnemonic); + } + + /** + * Whether this Executor reports subcommands. If not, reportSubcommand has no effect. + * This is provided so the caller of reportSubcommand can avoid wastefully constructing the + * subcommand string. + */ + public boolean reportsSubcommands() { + return executor.reportsSubcommands(); + } + + /** + * Report a subcommand event to this Executor's Reporter and, if action + * logging is enabled, post it on its EventBus. + */ + public void reportSubcommand(Spawn spawn) { + String reason; + ActionOwner owner = spawn.getResourceOwner().getOwner(); + if (owner == null) { + reason = spawn.getResourceOwner().prettyPrint(); + } else { + reason = Label.print(owner.getLabel()) + + " [" + spawn.getResourceOwner().prettyPrint() + "]"; + } + String message = Spawns.asShellCommand(spawn, getExecRoot()); + getEventHandler().handle(Event.of(EventKind.SUBCOMMAND, null, "# " + reason + "\n" + message)); } public ImmutableMap<String, String> getClientEnv() { diff --git a/src/main/java/com/google/devtools/build/lib/actions/Executor.java b/src/main/java/com/google/devtools/build/lib/actions/Executor.java index ee2e7029f2..e4a52d8dcb 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/Executor.java +++ b/src/main/java/com/google/devtools/build/lib/actions/Executor.java @@ -80,12 +80,6 @@ public interface Executor { boolean reportsSubcommands(); /** - * Report a subcommand event to this Executor's Reporter and, if action - * logging is enabled, post it on its EventBus. - */ - void reportSubcommand(Spawn spawn); - - /** * An event listener to report messages to. Errors that signal a action failure should * use ActionExecutionException. */ diff --git a/src/main/java/com/google/devtools/build/lib/analysis/SourceManifestAction.java b/src/main/java/com/google/devtools/build/lib/analysis/SourceManifestAction.java index 7004e29b92..0981efe719 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/SourceManifestAction.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/SourceManifestAction.java @@ -122,7 +122,7 @@ public final class SourceManifestAction extends AbstractFileWriteAction { public DeterministicWriter newDeterministicWriter(ActionExecutionContext ctx) throws IOException { final Map<PathFragment, Artifact> runfilesInputs = - runfiles.getRunfilesInputs(ctx.getExecutor().getEventHandler(), getOwner().getLocation()); + runfiles.getRunfilesInputs(ctx.getEventHandler(), getOwner().getLocation()); return new DeterministicWriter() { @Override public void writeOutputFile(OutputStream out) throws IOException { diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/AbstractFileWriteAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/AbstractFileWriteAction.java index ad6956299d..d0050ba7fd 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/actions/AbstractFileWriteAction.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/AbstractFileWriteAction.java @@ -22,7 +22,6 @@ import com.google.devtools.build.lib.actions.ActionExecutionException; import com.google.devtools.build.lib.actions.ActionOwner; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ExecException; -import com.google.devtools.build.lib.actions.Executor; import com.google.devtools.build.lib.cmdline.Label; import java.io.IOException; import java.io.OutputStream; @@ -58,13 +57,14 @@ public abstract class AbstractFileWriteAction extends AbstractAction { public final void execute(ActionExecutionContext actionExecutionContext) throws ActionExecutionException, InterruptedException { try { - getStrategy(actionExecutionContext.getExecutor()).exec(this, actionExecutionContext); + getStrategy(actionExecutionContext).exec(this, actionExecutionContext); } catch (ExecException e) { throw e.toActionExecutionException( "Writing file for rule '" + Label.print(getOwner().getLabel()) + "'", - actionExecutionContext.getExecutor().getVerboseFailures(), this); + actionExecutionContext.getVerboseFailures(), + this); } - afterWrite(actionExecutionContext.getExecutor()); + afterWrite(actionExecutionContext); } /** @@ -78,9 +78,9 @@ public abstract class AbstractFileWriteAction extends AbstractAction { /** * This hook is called after the File has been successfully written to disk. * - * @param executor the Executor. + * @param actionExecutionContext the execution context */ - protected void afterWrite(Executor executor) { + protected void afterWrite(ActionExecutionContext actionExecutionContext) { } @Override @@ -102,8 +102,8 @@ public abstract class AbstractFileWriteAction extends AbstractAction { return true; } - private FileWriteActionContext getStrategy(Executor executor) { - return executor.getContext(FileWriteActionContext.class); + private FileWriteActionContext getStrategy(ActionExecutionContext actionExecutionContext) { + return actionExecutionContext.getContext(FileWriteActionContext.class); } /** diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/ExecutableSymlinkAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/ExecutableSymlinkAction.java index 027e119e8d..17ed755306 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/actions/ExecutableSymlinkAction.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/ExecutableSymlinkAction.java @@ -20,7 +20,6 @@ import com.google.devtools.build.lib.actions.ActionExecutionException; import com.google.devtools.build.lib.actions.ActionOwner; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.vfs.Path; - import java.io.IOException; /** @@ -36,8 +35,7 @@ public final class ExecutableSymlinkAction extends SymlinkAction { @Override public void execute(ActionExecutionContext actionExecutionContext) throws ActionExecutionException { - Path inputPath = actionExecutionContext.getExecutor().getExecRoot().getRelative( - getInputPath()); + Path inputPath = actionExecutionContext.getExecRoot().getRelative(getInputPath()); try { // Validate that input path is a file with the executable bit is set. if (!inputPath.isFile()) { diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/PopulateTreeArtifactAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/PopulateTreeArtifactAction.java index 26eeadc3ff..8efe29ffef 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/actions/PopulateTreeArtifactAction.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/PopulateTreeArtifactAction.java @@ -31,7 +31,6 @@ import com.google.devtools.build.lib.actions.Artifact.TreeFileArtifact; import com.google.devtools.build.lib.actions.ArtifactPrefixConflictException; import com.google.devtools.build.lib.actions.BaseSpawn; import com.google.devtools.build.lib.actions.ExecException; -import com.google.devtools.build.lib.actions.Executor; import com.google.devtools.build.lib.actions.RunfilesSupplier; import com.google.devtools.build.lib.actions.Spawn; import com.google.devtools.build.lib.actions.SpawnActionContext; @@ -154,7 +153,6 @@ public final class PopulateTreeArtifactAction extends AbstractAction { @Override public void execute(ActionExecutionContext actionExecutionContext) throws ActionExecutionException, InterruptedException { - Executor executor = actionExecutionContext.getExecutor(); Spawn spawn; // Create a spawn to unzip the archive file into the output TreeArtifact. @@ -191,11 +189,11 @@ public final class PopulateTreeArtifactAction extends AbstractAction { // Execute the spawn. try { - getContext(executor).exec(spawn, actionExecutionContext); + getContext(actionExecutionContext).exec(spawn, actionExecutionContext); } catch (ExecException e) { throw e.toActionExecutionException( getMnemonic() + " action failed for target: " + getOwner().getLabel(), - executor.getVerboseFailures(), + actionExecutionContext.getVerboseFailures(), this); } @@ -231,8 +229,8 @@ public final class PopulateTreeArtifactAction extends AbstractAction { return true; } - private SpawnActionContext getContext(Executor executor) { - return executor.getSpawnActionContext(getMnemonic()); + private SpawnActionContext getContext(ActionExecutionContext actionExecutionContext) { + return actionExecutionContext.getSpawnActionContext(getMnemonic()); } /** 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 8ee9c993ea..11e52d2ef4 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 @@ -37,7 +37,6 @@ import com.google.devtools.build.lib.actions.CompositeRunfilesSupplier; import com.google.devtools.build.lib.actions.EmptyRunfilesSupplier; import com.google.devtools.build.lib.actions.ExecException; import com.google.devtools.build.lib.actions.ExecutionInfoSpecifier; -import com.google.devtools.build.lib.actions.Executor; import com.google.devtools.build.lib.actions.ParameterFile.ParameterFileType; import com.google.devtools.build.lib.actions.ResourceSet; import com.google.devtools.build.lib.actions.RunfilesSupplier; @@ -260,14 +259,13 @@ public class SpawnAction extends AbstractAction implements ExecutionInfoSpecifie */ protected void internalExecute( ActionExecutionContext actionExecutionContext) throws ExecException, InterruptedException { - getContext(actionExecutionContext.getExecutor()) + getContext(actionExecutionContext) .exec(getSpawn(actionExecutionContext.getClientEnv()), actionExecutionContext); } @Override public void execute(ActionExecutionContext actionExecutionContext) throws ActionExecutionException, InterruptedException { - Executor executor = actionExecutionContext.getExecutor(); try { internalExecute(actionExecutionContext); } catch (ExecException e) { @@ -283,7 +281,8 @@ public class SpawnAction extends AbstractAction implements ExecutionInfoSpecifie failMessage = "error executing shell command: " + "'" + truncate(Iterables.get(argv.arguments(), 2), 200) + "'"; } - throw e.toActionExecutionException(failMessage, executor.getVerboseFailures(), this); + throw e.toActionExecutionException( + failMessage, actionExecutionContext.getVerboseFailures(), this); } } @@ -434,8 +433,8 @@ public class SpawnAction extends AbstractAction implements ExecutionInfoSpecifie return executionInfo; } - protected SpawnActionContext getContext(Executor executor) { - return executor.getSpawnActionContext(getMnemonic()); + protected SpawnActionContext getContext(ActionExecutionContext actionExecutionContext) { + return actionExecutionContext.getSpawnActionContext(getMnemonic()); } /** diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkAction.java index 6cace67a03..b79f152fb7 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkAction.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkAction.java @@ -104,8 +104,8 @@ public class SymlinkAction extends AbstractAction { public void execute(ActionExecutionContext actionExecutionContext) throws ActionExecutionException { try { - getOutputPath().createSymbolicLink( - actionExecutionContext.getExecutor().getExecRoot().getRelative(inputPath)); + getOutputPath() + .createSymbolicLink(actionExecutionContext.getExecRoot().getRelative(inputPath)); } catch (IOException e) { throw new ActionExecutionException("failed to create symbolic link '" + Iterables.getOnlyElement(getOutputs()).prettyPrint() diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeAction.java index a7e82a1d3f..82c25314ef 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeAction.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeAction.java @@ -113,11 +113,9 @@ public final class SymlinkTreeAction extends AbstractAction { } @Override - public void execute( - ActionExecutionContext actionExecutionContext) - throws ActionExecutionException, InterruptedException { + public void execute(ActionExecutionContext actionExecutionContext) + throws ActionExecutionException, InterruptedException { actionExecutionContext - .getExecutor() .getContext(SymlinkTreeActionContext.class) .createSymlinks(this, actionExecutionContext, shellEnviroment, enableRunfiles); } diff --git a/src/main/java/com/google/devtools/build/lib/bazel/BazelWorkspaceStatusModule.java b/src/main/java/com/google/devtools/build/lib/bazel/BazelWorkspaceStatusModule.java index 186c42973d..80618a7aba 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/BazelWorkspaceStatusModule.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/BazelWorkspaceStatusModule.java @@ -116,7 +116,6 @@ public class BazelWorkspaceStatusModule extends BlazeModule { try { if (this.getWorkspaceStatusCommand != null) { actionExecutionContext - .getExecutor() .getEventHandler() .handle( Event.progress( @@ -224,7 +223,7 @@ public class BazelWorkspaceStatusModule extends BlazeModule { Map<String, String> overallMap = new TreeMap<>(); overallMap.putAll(volatileMap); overallMap.putAll(stableMap); - actionExecutionContext.getExecutor().getEventBus().post(new BuildInfoEvent(overallMap)); + actionExecutionContext.getEventBus().post(new BuildInfoEvent(overallMap)); // Only update the stableStatus contents if they are different than what we have on disk. // This is to preserve the old file's mtime so that we do not generate an unnecessary dirty diff --git a/src/main/java/com/google/devtools/build/lib/exec/BlazeExecutor.java b/src/main/java/com/google/devtools/build/lib/exec/BlazeExecutor.java index a9cb8b094d..1388376b9d 100644 --- a/src/main/java/com/google/devtools/build/lib/exec/BlazeExecutor.java +++ b/src/main/java/com/google/devtools/build/lib/exec/BlazeExecutor.java @@ -15,18 +15,14 @@ package com.google.devtools.build.lib.exec; import com.google.common.collect.ImmutableMap; import com.google.common.eventbus.EventBus; -import com.google.devtools.build.lib.actions.ActionOwner; import com.google.devtools.build.lib.actions.ExecutionStrategy; 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.Spawns; -import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe; import com.google.devtools.build.lib.events.Event; import com.google.devtools.build.lib.events.EventHandler; -import com.google.devtools.build.lib.events.EventKind; +import com.google.devtools.build.lib.events.ExtendedEventHandler; import com.google.devtools.build.lib.events.Reporter; import com.google.devtools.build.lib.profiler.Profiler; import com.google.devtools.build.lib.profiler.ProfilerTask; @@ -149,7 +145,7 @@ public final class BlazeExecutor implements Executor { } @Override - public EventHandler getEventHandler() { + public ExtendedEventHandler getEventHandler() { return reporter; } @@ -168,20 +164,6 @@ public final class BlazeExecutor implements Executor { return showSubcommands; } - @Override - public void reportSubcommand(Spawn spawn) { - String reason; - ActionOwner owner = spawn.getResourceOwner().getOwner(); - if (owner == null) { - reason = spawn.getResourceOwner().prettyPrint(); - } else { - reason = Label.print(owner.getLabel()) - + " [" + spawn.getResourceOwner().prettyPrint() + "]"; - } - String message = Spawns.asShellCommand(spawn, getExecRoot()); - reporter.handle(Event.of(EventKind.SUBCOMMAND, null, "# " + reason + "\n" + message)); - } - /** * This method is called before the start of the execution phase of each * build request. 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 cbbabe4b21..5189f289f1 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 @@ -21,7 +21,6 @@ import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.EnvironmentalExecException; import com.google.devtools.build.lib.actions.ExecException; import com.google.devtools.build.lib.actions.ExecutionStrategy; -import com.google.devtools.build.lib.actions.Executor; import com.google.devtools.build.lib.actions.ResourceSet; import com.google.devtools.build.lib.actions.SimpleSpawn; import com.google.devtools.build.lib.actions.Spawn; @@ -87,7 +86,7 @@ public class StandaloneTestStrategy extends TestStrategy { @Override public void exec(TestRunnerAction action, ActionExecutionContext actionExecutionContext) throws ExecException, InterruptedException { - Path execRoot = actionExecutionContext.getExecutor().getExecRoot(); + Path execRoot = actionExecutionContext.getExecRoot(); Path coverageDir = execRoot.getRelative(action.getCoverageDirectory()); Path runfilesDir = getLocalRunfilesDirectory( @@ -133,8 +132,6 @@ public class StandaloneTestStrategy extends TestStrategy { ImmutableList.copyOf(action.getSpawnOutputs()), localResourceUsage); - Executor executor = actionExecutionContext.getExecutor(); - TestResultData.Builder dataBuilder = TestResultData.newBuilder(); try { @@ -153,7 +150,7 @@ public class StandaloneTestStrategy extends TestStrategy { data.getStatus() != BlazeTestStatus.PASSED && attempt < maxAttempts; attempt++) { processFailedTestAttempt( - attempt, executor, action, dataBuilder, data, actionExecutionContext.getFileOutErr()); + attempt, actionExecutionContext, action, dataBuilder, data); data = executeTestAttempt( action, @@ -172,7 +169,7 @@ public class StandaloneTestStrategy extends TestStrategy { if (resolvedPaths.getXmlOutputPath().exists()) { testOutputsBuilder.add(Pair.of("test.xml", resolvedPaths.getXmlOutputPath())); } - executor + actionExecutionContext .getEventBus() .post( new TestAttempt( @@ -185,18 +182,17 @@ public class StandaloneTestStrategy extends TestStrategy { true)); finalizeTest(actionExecutionContext, action, dataBuilder.build()); } catch (IOException e) { - executor.getEventHandler().handle(Event.error("Caught I/O exception: " + e)); + actionExecutionContext.getEventHandler().handle(Event.error("Caught I/O exception: " + e)); throw new EnvironmentalExecException("unexpected I/O exception", e); } } private void processFailedTestAttempt( int attempt, - Executor executor, + ActionExecutionContext actionExecutionContext, TestRunnerAction action, Builder dataBuilder, - TestResultData data, - FileOutErr outErr) + TestResultData data) throws IOException { ImmutableList.Builder<Pair<String, Path>> testOutputsBuilder = new ImmutableList.Builder<>(); // Rename outputs @@ -211,7 +207,7 @@ public class StandaloneTestStrategy extends TestStrategy { action.getTestLog().getPath().renameTo(testLog); testOutputsBuilder.add(Pair.of("test.log", testLog)); } - ResolvedPaths resolvedPaths = action.resolve(executor.getExecRoot()); + ResolvedPaths resolvedPaths = action.resolve(actionExecutionContext.getExecRoot()); if (resolvedPaths.getXmlOutputPath().exists()) { Path destinationPath = attemptsDir.getChild(attemptPrefix + ".xml"); resolvedPaths.getXmlOutputPath().renameTo(destinationPath); @@ -221,7 +217,7 @@ public class StandaloneTestStrategy extends TestStrategy { dataBuilder.addFailedLogs(testLog.toString()); dataBuilder.addTestTimes(data.getTestTimes(0)); dataBuilder.addAllTestProcessTimes(data.getTestProcessTimesList()); - executor + actionExecutionContext .getEventBus() .post( new TestAttempt( @@ -232,7 +228,7 @@ public class StandaloneTestStrategy extends TestStrategy { data.getRunDurationMillis(), testOutputsBuilder.build(), false)); - processTestOutput(executor, outErr, new TestResult(action, data, false), testLog); + processTestOutput(actionExecutionContext, new TestResult(action, data, false), testLog); } private void processLastTestAttempt(int attempt, Builder dataBuilder, TestResultData data) { @@ -305,20 +301,19 @@ public class StandaloneTestStrategy extends TestStrategy { Spawn spawn, ActionExecutionContext actionExecutionContext) throws ExecException, InterruptedException, IOException { - Executor executor = actionExecutionContext.getExecutor(); Closeable streamed = null; Path testLogPath = action.getTestLog().getPath(); TestResultData.Builder builder = TestResultData.newBuilder(); - long startTime = executor.getClock().currentTimeMillis(); - SpawnActionContext spawnActionContext = executor.getSpawnActionContext(action.getMnemonic()); + long startTime = actionExecutionContext.getClock().currentTimeMillis(); + SpawnActionContext spawnActionContext = + actionExecutionContext.getSpawnActionContext(action.getMnemonic()); try { try { if (executionOptions.testOutput.equals(TestOutputFormat.STREAMED)) { streamed = new StreamedTestOutput( - Reporter.outErrForReporter( - actionExecutionContext.getExecutor().getEventHandler()), + Reporter.outErrForReporter(actionExecutionContext.getEventHandler()), testLogPath); } spawnActionContext.exec(spawn, actionExecutionContext); @@ -341,7 +336,7 @@ public class StandaloneTestStrategy extends TestStrategy { throw e; } } finally { - long duration = executor.getClock().currentTimeMillis() - startTime; + long duration = actionExecutionContext.getClock().currentTimeMillis() - startTime; builder.setStartTimeMillisEpoch(startTime); builder.addTestTimes(duration); builder.addTestProcessTimes(duration); @@ -354,7 +349,7 @@ public class StandaloneTestStrategy extends TestStrategy { TestCase details = parseTestResult( action - .resolve(actionExecutionContext.getExecutor().getExecRoot()) + .resolve(actionExecutionContext.getExecRoot()) .getXmlOutputPath()); if (details != null) { builder.setTestCase(details); @@ -376,26 +371,30 @@ public class StandaloneTestStrategy extends TestStrategy { * parallel test outputs will not get interleaved. */ protected void processTestOutput( - Executor executor, FileOutErr outErr, TestResult result, Path testLogPath) - throws IOException { - Path testOutput = executor.getExecRoot().getRelative(testLogPath.asFragment()); + ActionExecutionContext actionExecutionContext, TestResult result, Path testLogPath) + throws IOException { + Path testOutput = actionExecutionContext.getExecRoot().getRelative(testLogPath.asFragment()); boolean isPassed = result.getData().getTestPassed(); try { if (TestLogHelper.shouldOutputTestLog(executionOptions.testOutput, isPassed)) { - TestLogHelper.writeTestLog(testOutput, result.getTestName(), outErr.getOutputStream()); + TestLogHelper.writeTestLog( + testOutput, + result.getTestName(), + actionExecutionContext.getFileOutErr().getOutputStream()); } } finally { if (isPassed) { - executor.getEventHandler().handle(Event.of(EventKind.PASS, null, result.getTestName())); + actionExecutionContext + .getEventHandler().handle(Event.of(EventKind.PASS, null, result.getTestName())); } else { if (result.getData().getStatus() == BlazeTestStatus.TIMEOUT) { - executor + actionExecutionContext .getEventHandler() .handle( Event.of( EventKind.TIMEOUT, null, result.getTestName() + " (see " + testOutput + ")")); } else { - executor + actionExecutionContext .getEventHandler() .handle( Event.of( @@ -409,11 +408,10 @@ public class StandaloneTestStrategy extends TestStrategy { ActionExecutionContext actionExecutionContext, TestRunnerAction action, TestResultData data) throws IOException, ExecException { TestResult result = new TestResult(action, data, false); - postTestResult(actionExecutionContext.getExecutor(), result); + postTestResult(actionExecutionContext, result); processTestOutput( - actionExecutionContext.getExecutor(), - actionExecutionContext.getFileOutErr(), + actionExecutionContext, result, result.getTestLogPath()); // TODO(bazel-team): handle --test_output=errors, --test_output=all. diff --git a/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeHelper.java b/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeHelper.java index 2fb8dd02e0..2299faee87 100644 --- a/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeHelper.java +++ b/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeHelper.java @@ -117,8 +117,8 @@ public final class SymlinkTreeHelper { if (enableRunfiles) { List<String> args = getSpawnArgumentList( - actionExecutionContext.getExecutor().getExecRoot(), binTools); - actionExecutionContext.getExecutor().getSpawnActionContext(action.getMnemonic()).exec( + actionExecutionContext.getExecRoot(), binTools); + actionExecutionContext.getSpawnActionContext(action.getMnemonic()).exec( new BaseSpawn.Local(args, shellEnvironment, action, RESOURCE_SET), actionExecutionContext); } else { diff --git a/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeStrategy.java b/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeStrategy.java index 6bde8f6952..8fa18debb9 100644 --- a/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeStrategy.java +++ b/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeStrategy.java @@ -18,7 +18,6 @@ import com.google.devtools.build.lib.actions.ActionExecutionContext; import com.google.devtools.build.lib.actions.ActionExecutionException; import com.google.devtools.build.lib.actions.ExecException; import com.google.devtools.build.lib.actions.ExecutionStrategy; -import com.google.devtools.build.lib.actions.Executor; import com.google.devtools.build.lib.analysis.actions.SymlinkTreeAction; import com.google.devtools.build.lib.analysis.actions.SymlinkTreeActionContext; import com.google.devtools.build.lib.analysis.config.BinTools; @@ -48,7 +47,6 @@ public final class SymlinkTreeStrategy implements SymlinkTreeActionContext { ImmutableMap<String, String> shellEnvironment, boolean enableRunfiles) throws ActionExecutionException, InterruptedException { - Executor executor = actionExecutionContext.getExecutor(); try (AutoProfiler p = AutoProfiler.logged( "running " + action.prettyPrint(), LOG, /*minTimeForLoggingInMilliseconds=*/ 100)) { @@ -71,7 +69,7 @@ public final class SymlinkTreeStrategy implements SymlinkTreeActionContext { } } catch (ExecException e) { throw e.toActionExecutionException( - action.getProgressMessage(), executor.getVerboseFailures(), action); + action.getProgressMessage(), actionExecutionContext.getVerboseFailures(), action); } } } diff --git a/src/main/java/com/google/devtools/build/lib/exec/TestStrategy.java b/src/main/java/com/google/devtools/build/lib/exec/TestStrategy.java index 8b0450a599..3ccf81eec0 100644 --- a/src/main/java/com/google/devtools/build/lib/exec/TestStrategy.java +++ b/src/main/java/com/google/devtools/build/lib/exec/TestStrategy.java @@ -24,7 +24,6 @@ import com.google.common.io.Closeables; import com.google.devtools.build.lib.actions.ActionExecutionContext; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ExecException; -import com.google.devtools.build.lib.actions.Executor; import com.google.devtools.build.lib.analysis.config.BinTools; import com.google.devtools.build.lib.events.Event; import com.google.devtools.build.lib.profiler.Profiler; @@ -235,9 +234,10 @@ public abstract class TestStrategy implements TestActionContext { /* * Finalize test run: persist the result, and post on the event bus. */ - protected void postTestResult(Executor executor, TestResult result) throws IOException { + protected void postTestResult(ActionExecutionContext actionExecutionContext, TestResult result) + throws IOException { result.getTestAction().saveCacheStatus(result.getData()); - executor.getEventBus().post(result); + actionExecutionContext.getEventBus().post(result); } /** @@ -365,8 +365,6 @@ public abstract class TestStrategy implements TestActionContext { ImmutableMap<String, String> shellEnvironment, boolean enableRunfiles) throws ExecException, InterruptedException { - Executor executor = actionExecutionContext.getExecutor(); - TestTargetExecutionSettings execSettings = testAction.getExecutionSettings(); Path outputManifest = runfilesDir.getRelative("MANIFEST"); try { @@ -383,7 +381,7 @@ public abstract class TestStrategy implements TestActionContext { // Ignore it - we will just try to create runfiles directory. } - executor + actionExecutionContext .getEventHandler() .handle( Event.progress( @@ -395,7 +393,8 @@ public abstract class TestStrategy implements TestActionContext { .createSymlinks( testAction, actionExecutionContext, binTools, shellEnvironment, enableRunfiles); - executor.getEventHandler().handle(Event.progress(testAction.getProgressMessage())); + actionExecutionContext.getEventHandler() + .handle(Event.progress(testAction.getProgressMessage())); } /** In rare cases, we might write something to stderr. Append it to the real test.log. */ diff --git a/src/main/java/com/google/devtools/build/lib/remote/RemoteSpawnStrategy.java b/src/main/java/com/google/devtools/build/lib/remote/RemoteSpawnStrategy.java index 70623b19e5..a8461e4694 100644 --- a/src/main/java/com/google/devtools/build/lib/remote/RemoteSpawnStrategy.java +++ b/src/main/java/com/google/devtools/build/lib/remote/RemoteSpawnStrategy.java @@ -22,7 +22,6 @@ import com.google.devtools.build.lib.actions.ActionInputFileCache; import com.google.devtools.build.lib.actions.ActionStatusMessage; import com.google.devtools.build.lib.actions.ExecException; import com.google.devtools.build.lib.actions.ExecutionStrategy; -import com.google.devtools.build.lib.actions.Executor; import com.google.devtools.build.lib.actions.Spawn; import com.google.devtools.build.lib.actions.SpawnActionContext; import com.google.devtools.build.lib.actions.Spawns; @@ -172,14 +171,12 @@ final class RemoteSpawnStrategy implements SpawnActionContext { throw new UserExecException("Unexpected IO error.", e); } catch (UnsupportedOperationException e) { actionExecutionContext - .getExecutor() .getEventHandler() .handle( Event.warn( spawn.getMnemonic() + " unsupported operation for action cache (" + e + ")")); } catch (StatusRuntimeException e) { actionExecutionContext - .getExecutor() .getEventHandler() .handle(Event.warn(spawn.getMnemonic() + " failed uploading results (" + e + ")")); } @@ -222,8 +219,7 @@ final class RemoteSpawnStrategy implements SpawnActionContext { throws ExecException, InterruptedException { ActionKey actionKey = null; String mnemonic = spawn.getMnemonic(); - Executor executor = actionExecutionContext.getExecutor(); - EventHandler eventHandler = executor.getEventHandler(); + EventHandler eventHandler = actionExecutionContext.getEventHandler(); RemoteActionCache remoteCache = null; GrpcRemoteExecutor workExecutor = null; @@ -253,10 +249,10 @@ final class RemoteSpawnStrategy implements SpawnActionContext { fallbackStrategy.exec(spawn, actionExecutionContext); return; } - if (executor.reportsSubcommands()) { - executor.reportSubcommand(spawn); + if (actionExecutionContext.reportsSubcommands()) { + actionExecutionContext.reportSubcommand(spawn); } - executor + actionExecutionContext .getEventBus() .post(ActionStatusMessage.runningStrategy(spawn.getResourceOwner(), "remote")); @@ -269,7 +265,7 @@ final class RemoteSpawnStrategy implements SpawnActionContext { spawn, actionExecutionContext.getArtifactExpander(), actionExecutionContext.getActionInputFileCache(), - actionExecutionContext.getExecutor().getContext(FilesetActionContext.class)); + actionExecutionContext.getContext(FilesetActionContext.class)); TreeNode inputRoot = repository.buildFromActionInputs(inputMap); repository.computeMerkleDigests(inputRoot); Command command = buildCommand(spawn.getArguments(), spawn.getEnvironment()); @@ -325,7 +321,7 @@ final class RemoteSpawnStrategy implements SpawnActionContext { passRemoteOutErr(remoteCache, result, actionExecutionContext.getFileOutErr()); remoteCache.downloadAllResults(result, execRoot); if (result.getExitCode() != 0) { - String cwd = executor.getExecRoot().getPathString(); + String cwd = actionExecutionContext.getExecRoot().getPathString(); String message = CommandFailureUtils.describeCommandFailure( verboseFailures, spawn.getArguments(), spawn.getEnvironment(), cwd); diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/WriteAdbArgsAction.java b/src/main/java/com/google/devtools/build/lib/rules/android/WriteAdbArgsAction.java index 4d48cf9bad..ed1b644175 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/WriteAdbArgsAction.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/WriteAdbArgsAction.java @@ -24,7 +24,6 @@ import com.google.devtools.build.lib.util.Fingerprint; import com.google.devtools.common.options.EnumConverter; import com.google.devtools.common.options.Option; import com.google.devtools.common.options.OptionsBase; - import java.io.IOException; import java.io.OutputStream; import java.io.PrintStream; @@ -99,14 +98,14 @@ public final class WriteAdbArgsAction extends AbstractFileWriteAction { @Override public DeterministicWriter newDeterministicWriter(ActionExecutionContext ctx) throws IOException, InterruptedException, ExecException { - Options options = ctx.getExecutor().getOptions().getOptions(Options.class); + Options options = ctx.getOptions().getOptions(Options.class); final List<String> args = options.adbArgs; final String adb = options.adb; final int adbJobs = options.adbJobs; final String incrementalInstallVerbosity = options.incrementalInstallVerbosity; final StartType start = options.start; - final String userHomeDirectory = ctx.getExecutor().getContext( - WriteAdbArgsActionContext.class).getUserHomeDirectory(); + final String userHomeDirectory = + ctx.getContext(WriteAdbArgsActionContext.class).getUserHomeDirectory(); return new DeterministicWriter() { @Override 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 3adb10d216..d384928737 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 @@ -35,7 +35,6 @@ import com.google.devtools.build.lib.actions.CommandAction; import com.google.devtools.build.lib.actions.ExecException; import com.google.devtools.build.lib.actions.ExecutionInfoSpecifier; import com.google.devtools.build.lib.actions.ExecutionRequirements; -import com.google.devtools.build.lib.actions.Executor; import com.google.devtools.build.lib.actions.ResourceSet; import com.google.devtools.build.lib.actions.extra.CppCompileInfo; import com.google.devtools.build.lib.actions.extra.EnvironmentVariable; @@ -449,23 +448,21 @@ public class CppCompileAction extends AbstractAction @Override public Iterable<Artifact> discoverInputs(ActionExecutionContext actionExecutionContext) throws ActionExecutionException, InterruptedException { - Executor executor = actionExecutionContext.getExecutor(); Iterable<Artifact> initialResult; actionExecutionContext - .getExecutor() .getEventBus() .post(ActionStatusMessage.analysisStrategy(this)); try { initialResult = - executor + actionExecutionContext .getContext(actionContext) .findAdditionalInputs( this, actionExecutionContext, cppSemantics.getIncludeProcessing()); } catch (ExecException e) { throw e.toActionExecutionException( "Include scanning of rule '" + getOwner().getLabel() + "'", - executor.getVerboseFailures(), + actionExecutionContext.getVerboseFailures(), this); } @@ -506,7 +503,7 @@ public class CppCompileAction extends AbstractAction // to the set of inputs the caller may need to be aware of. Collection<Artifact> result = new HashSet<>(); ArtifactResolver artifactResolver = - executor.getContext(IncludeScanningContext.class).getArtifactResolver(); + actionExecutionContext.getContext(IncludeScanningContext.class).getArtifactResolver(); for (Artifact artifact : initialResult) { result.addAll(specialInputsHandler.getInputsForIncludedFile(artifact, artifactResolver)); } @@ -1156,7 +1153,6 @@ public class CppCompileAction extends AbstractAction throws ActionExecutionException, InterruptedException { setModuleFileFlags(); - Executor executor = actionExecutionContext.getExecutor(); CppCompileActionContext.Reply reply; ShowIncludesFilter showIncludesFilterForStdout = null; ShowIncludesFilter showIncludesFilterForStderr = null; @@ -1169,16 +1165,20 @@ public class CppCompileAction extends AbstractAction actionExecutionContext.getFileOutErr().setErrorFilter(showIncludesFilterForStderr); } try { - reply = executor.getContext(actionContext).execWithReply(this, actionExecutionContext); + reply = actionExecutionContext.getContext(actionContext) + .execWithReply(this, actionExecutionContext); } catch (ExecException e) { - throw e.toActionExecutionException("C++ compilation of rule '" + getOwner().getLabel() + "'", - executor.getVerboseFailures(), this); + throw e.toActionExecutionException( + "C++ compilation of rule '" + getOwner().getLabel() + "'", + actionExecutionContext.getVerboseFailures(), + this); } ensureCoverageNotesFilesExist(); // This is the .d file scanning part. - IncludeScanningContext scanningContext = executor.getContext(IncludeScanningContext.class); - Path execRoot = executor.getExecRoot(); + IncludeScanningContext scanningContext = + actionExecutionContext.getContext(IncludeScanningContext.class); + Path execRoot = actionExecutionContext.getExecRoot(); NestedSet<Artifact> discoveredInputs; if (featureConfiguration.isEnabled(CppRuleClasses.PARSE_SHOWINCLUDES)) { @@ -1205,7 +1205,7 @@ public class CppCompileAction extends AbstractAction validateInclusions( discoveredInputs, actionExecutionContext.getArtifactExpander(), - executor.getEventHandler()); + actionExecutionContext.getEventHandler()); } } @@ -1322,7 +1322,7 @@ public class CppCompileAction extends AbstractAction throws ActionExecutionException, InterruptedException { Iterable<Artifact> scannedIncludes; try { - scannedIncludes = actionExecutionContext.getExecutor().getContext(actionContext) + scannedIncludes = actionExecutionContext.getContext(actionContext) .findAdditionalInputs(this, actionExecutionContext, cppSemantics.getIncludeProcessing()); } catch (ExecException e) { throw e.toActionExecutionException(this); 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 6399b35ebf..9122b8c539 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 @@ -32,7 +32,6 @@ import com.google.devtools.build.lib.actions.CommandAction; import com.google.devtools.build.lib.actions.ExecException; import com.google.devtools.build.lib.actions.ExecutionInfoSpecifier; import com.google.devtools.build.lib.actions.ExecutionRequirements; -import com.google.devtools.build.lib.actions.Executor; import com.google.devtools.build.lib.actions.ResourceSet; import com.google.devtools.build.lib.actions.SimpleSpawn; import com.google.devtools.build.lib.actions.Spawn; @@ -296,13 +295,11 @@ public final class CppLinkAction extends AbstractAction @Override @ThreadCompatible - public void execute( - ActionExecutionContext actionExecutionContext) - throws ActionExecutionException, InterruptedException { + public void execute(ActionExecutionContext actionExecutionContext) + throws ActionExecutionException, InterruptedException { if (fake) { executeFake(); } else { - Executor executor = actionExecutionContext.getExecutor(); try { // Collect input files List<ActionInput> allInputs = new ArrayList<>(); @@ -322,11 +319,13 @@ public final class CppLinkAction extends AbstractAction ImmutableList.copyOf(allInputs), getOutputs().asList(), estimateResourceConsumptionLocal()); - executor.getSpawnActionContext(getMnemonic()).exec( - spawn, actionExecutionContext); + actionExecutionContext.getSpawnActionContext(getMnemonic()) + .exec(spawn, actionExecutionContext); } catch (ExecException e) { - throw e.toActionExecutionException("Linking of rule '" + getOwner().getLabel() + "'", - executor.getVerboseFailures(), this); + throw e.toActionExecutionException( + "Linking of rule '" + getOwner().getLabel() + "'", + actionExecutionContext.getVerboseFailures(), + this); } } } diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtractInclusionAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtractInclusionAction.java index 6a16ea78e3..e66fae1f63 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtractInclusionAction.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/ExtractInclusionAction.java @@ -21,7 +21,6 @@ import com.google.devtools.build.lib.actions.ActionExecutionException; import com.google.devtools.build.lib.actions.ActionOwner; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ExecException; -import com.google.devtools.build.lib.actions.Executor; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import java.io.IOException; @@ -67,8 +66,8 @@ final class ExtractInclusionAction extends AbstractAction { @Override public void execute(ActionExecutionContext actionExecutionContext) throws ActionExecutionException, InterruptedException { - Executor executor = actionExecutionContext.getExecutor(); - IncludeScanningContext context = executor.getContext(IncludeScanningContext.class); + IncludeScanningContext context = + actionExecutionContext.getContext(IncludeScanningContext.class); try { context.extractIncludes(actionExecutionContext, this, getPrimaryInput(), getPrimaryOutput()); 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 31363c3cf1..d36af24a4a 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 @@ -27,7 +27,6 @@ import com.google.devtools.build.lib.actions.ActionExecutionException; import com.google.devtools.build.lib.actions.ActionOwner; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ExecException; -import com.google.devtools.build.lib.actions.Executor; import com.google.devtools.build.lib.actions.ResourceSet; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.collect.nestedset.NestedSet; @@ -133,21 +132,22 @@ public class FakeCppCompileAction extends CppCompileAction { public void execute(ActionExecutionContext actionExecutionContext) throws ActionExecutionException, InterruptedException { setModuleFileFlags(); - Executor executor = actionExecutionContext.getExecutor(); - // First, do a normal compilation, to generate the ".d" file. The generated object file is built // to a temporary location (tempOutputFile) and ignored afterwards. LOG.info("Generating " + getDotdFile()); - CppCompileActionContext context = executor.getContext(actionContext); + CppCompileActionContext context = actionExecutionContext.getContext(actionContext); CppCompileActionContext.Reply reply = null; try { reply = context.execWithReply(this, actionExecutionContext); } catch (ExecException e) { - throw e.toActionExecutionException("C++ compilation of rule '" + getOwner().getLabel() + "'", - executor.getVerboseFailures(), this); + throw e.toActionExecutionException( + "C++ compilation of rule '" + getOwner().getLabel() + "'", + actionExecutionContext.getVerboseFailures(), + this); } - IncludeScanningContext scanningContext = executor.getContext(IncludeScanningContext.class); - Path execRoot = executor.getExecRoot(); + IncludeScanningContext scanningContext = + actionExecutionContext.getContext(IncludeScanningContext.class); + Path execRoot = actionExecutionContext.getExecRoot(); NestedSet<Artifact> discoveredInputs; if (getDotdFile() == null) { @@ -184,11 +184,11 @@ public class FakeCppCompileAction extends CppCompileAction { validateInclusions( discoveredInputs, actionExecutionContext.getArtifactExpander(), - executor.getEventHandler()); + actionExecutionContext.getEventHandler()); } catch (ActionExecutionException e) { // TODO(bazel-team): (2009) make this into an error, once most of the current warnings // are fixed. - executor.getEventHandler().handle(Event.warn( + actionExecutionContext.getEventHandler().handle(Event.warn( getOwner().getLocation(), e.getMessage() + ";\n this warning may eventually become an error")); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategy.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategy.java index 366bcd47ef..91f88112f7 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategy.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategy.java @@ -66,7 +66,6 @@ public class SpawnGccStrategy implements CppCompileActionContext { action.estimateResourceConsumptionLocal()); actionExecutionContext - .getExecutor() .getSpawnActionContext(action.getMnemonic()) .exec(spawn, actionExecutionContext); return null; diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/WriteBuildInfoHeaderAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/WriteBuildInfoHeaderAction.java index 4ad655c467..b02376ef7a 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/WriteBuildInfoHeaderAction.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/WriteBuildInfoHeaderAction.java @@ -26,7 +26,6 @@ import com.google.devtools.build.lib.analysis.actions.AbstractFileWriteAction; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.util.Fingerprint; import com.google.devtools.build.lib.util.Preconditions; - import java.io.IOException; import java.io.OutputStream; import java.io.OutputStreamWriter; @@ -83,8 +82,7 @@ public final class WriteBuildInfoHeaderAction extends AbstractFileWriteAction { @Override public DeterministicWriter newDeterministicWriter(ActionExecutionContext ctx) throws IOException { - WorkspaceStatusAction.Context context = - ctx.getExecutor().getContext(WorkspaceStatusAction.Context.class); + WorkspaceStatusAction.Context context = ctx.getContext(WorkspaceStatusAction.Context.class); final Map<String, WorkspaceStatusAction.Key> keys = new LinkedHashMap<>(); if (writeVolatileInfo) { diff --git a/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleAction.java b/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleAction.java index 3fbaeb5fd3..7f4501d189 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleAction.java +++ b/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleAction.java @@ -69,7 +69,7 @@ public class GenRuleAction extends SpawnAction { @Override protected void internalExecute( ActionExecutionContext actionExecutionContext) throws ExecException, InterruptedException { - EventHandler reporter = actionExecutionContext.getExecutor().getEventHandler(); + EventHandler reporter = actionExecutionContext.getEventHandler(); checkInputsForDirectories(reporter, actionExecutionContext.getMetadataHandler()); super.internalExecute(actionExecutionContext); checkOutputsForDirectories(reporter); diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaHeaderCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaHeaderCompileAction.java index 02c072002e..104ef4fcb7 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaHeaderCompileAction.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaHeaderCompileAction.java @@ -28,7 +28,6 @@ import com.google.devtools.build.lib.actions.ActionOwner; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.BaseSpawn; import com.google.devtools.build.lib.actions.ExecException; -import com.google.devtools.build.lib.actions.Executor; import com.google.devtools.build.lib.actions.ParameterFile; import com.google.devtools.build.lib.actions.ResourceSet; import com.google.devtools.build.lib.actions.Spawn; @@ -129,8 +128,7 @@ public class JavaHeaderCompileAction extends SpawnAction { @Override protected void internalExecute(ActionExecutionContext actionExecutionContext) throws ExecException, InterruptedException { - Executor executor = actionExecutionContext.getExecutor(); - SpawnActionContext context = getContext(executor); + SpawnActionContext context = getContext(actionExecutionContext); try { context.exec(getDirectSpawn(), actionExecutionContext); } catch (ExecException e) { diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/WriteBuildInfoPropertiesAction.java b/src/main/java/com/google/devtools/build/lib/rules/java/WriteBuildInfoPropertiesAction.java index 2f1b0a7221..c8bbd147a4 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/WriteBuildInfoPropertiesAction.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/WriteBuildInfoPropertiesAction.java @@ -148,8 +148,7 @@ public class WriteBuildInfoPropertiesAction extends AbstractFileWriteAction { return new DeterministicWriter() { @Override public void writeOutputFile(OutputStream out) throws IOException { - WorkspaceStatusAction.Context context = - ctx.getExecutor().getContext(WorkspaceStatusAction.Context.class); + WorkspaceStatusAction.Context context = ctx.getContext(WorkspaceStatusAction.Context.class); Map<String, String> values = new LinkedHashMap<>(); for (Artifact valueFile : valueArtifacts) { values.putAll(WorkspaceStatusAction.parseValues(valueFile.getPath())); diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCompileAction.java index 4ccd3d0aaf..aa2f6ffa9d 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCompileAction.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCompileAction.java @@ -29,7 +29,6 @@ import com.google.devtools.build.lib.actions.ActionOwner; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ArtifactResolver; import com.google.devtools.build.lib.actions.ExecException; -import com.google.devtools.build.lib.actions.Executor; import com.google.devtools.build.lib.actions.ResourceSet; import com.google.devtools.build.lib.actions.RunfilesSupplier; import com.google.devtools.build.lib.actions.Spawn; @@ -193,7 +192,7 @@ public class ObjcCompileAction extends SpawnAction { } catch (ExecException e) { throw e.toActionExecutionException( "Header thinning of rule '" + getOwner().getLabel() + "'", - actionExecutionContext.getExecutor().getVerboseFailures(), + actionExecutionContext.getVerboseFailures(), this); } } else { @@ -213,11 +212,11 @@ public class ObjcCompileAction extends SpawnAction { super.execute(actionExecutionContext); if (dotdPruningPlan == HeaderDiscovery.DotdPruningMode.USE) { - Executor executor = actionExecutionContext.getExecutor(); - IncludeScanningContext scanningContext = executor.getContext(IncludeScanningContext.class); + IncludeScanningContext scanningContext = + actionExecutionContext.getContext(IncludeScanningContext.class); NestedSet<Artifact> discoveredInputs = discoverInputsFromDotdFiles( - executor.getExecRoot(), scanningContext.getArtifactResolver()); + actionExecutionContext.getExecRoot(), scanningContext.getArtifactResolver()); updateActionInputs(discoveredInputs); } else { diff --git a/src/main/java/com/google/devtools/build/lib/rules/test/BaselineCoverageAction.java b/src/main/java/com/google/devtools/build/lib/rules/test/BaselineCoverageAction.java index a38cef2433..8137555ca2 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/test/BaselineCoverageAction.java +++ b/src/main/java/com/google/devtools/build/lib/rules/test/BaselineCoverageAction.java @@ -21,7 +21,6 @@ import com.google.common.eventbus.EventBus; import com.google.devtools.build.lib.actions.ActionExecutionContext; import com.google.devtools.build.lib.actions.ActionOwner; import com.google.devtools.build.lib.actions.Artifact; -import com.google.devtools.build.lib.actions.Executor; import com.google.devtools.build.lib.actions.NotifyOnActionCacheHit; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.actions.AbstractFileWriteAction; @@ -89,8 +88,8 @@ public final class BaselineCoverageAction extends AbstractFileWriteAction } @Override - protected void afterWrite(Executor executor) { - notifyAboutBaselineCoverage(executor.getEventBus()); + protected void afterWrite(ActionExecutionContext actionExecutionContext) { + notifyAboutBaselineCoverage(actionExecutionContext.getEventBus()); } @Override diff --git a/src/main/java/com/google/devtools/build/lib/rules/test/TestRunnerAction.java b/src/main/java/com/google/devtools/build/lib/rules/test/TestRunnerAction.java index 5f809dcf02..a9349db769 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/test/TestRunnerAction.java +++ b/src/main/java/com/google/devtools/build/lib/rules/test/TestRunnerAction.java @@ -641,8 +641,7 @@ public class TestRunnerAction extends AbstractAction implements NotifyOnActionCa @Override public void execute(ActionExecutionContext actionExecutionContext) throws ActionExecutionException, InterruptedException { - TestActionContext context = - actionExecutionContext.getExecutor().getContext(TestActionContext.class); + TestActionContext context = actionExecutionContext.getContext(TestActionContext.class); try { context.exec(this, actionExecutionContext); } catch (ExecException e) { diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/DarwinSandboxedStrategy.java b/src/main/java/com/google/devtools/build/lib/sandbox/DarwinSandboxedStrategy.java index 5798303c1e..e96c417980 100644 --- a/src/main/java/com/google/devtools/build/lib/sandbox/DarwinSandboxedStrategy.java +++ b/src/main/java/com/google/devtools/build/lib/sandbox/DarwinSandboxedStrategy.java @@ -21,7 +21,6 @@ import com.google.devtools.build.lib.actions.ActionExecutionContext; import com.google.devtools.build.lib.actions.ActionStatusMessage; import com.google.devtools.build.lib.actions.ExecException; import com.google.devtools.build.lib.actions.ExecutionStrategy; -import com.google.devtools.build.lib.actions.Executor; import com.google.devtools.build.lib.actions.Spawn; import com.google.devtools.build.lib.actions.SpawnActionContext; import com.google.devtools.build.lib.buildtool.BuildRequest; @@ -162,11 +161,10 @@ public class DarwinSandboxedStrategy extends SandboxStrategy { ActionExecutionContext actionExecutionContext, AtomicReference<Class<? extends SpawnActionContext>> writeOutputFiles) throws ExecException, InterruptedException, IOException { - Executor executor = actionExecutionContext.getExecutor(); - executor + actionExecutionContext .getEventBus() .post(ActionStatusMessage.runningStrategy(spawn.getResourceOwner(), "darwin-sandbox")); - SandboxHelpers.reportSubcommand(executor, spawn); + SandboxHelpers.reportSubcommand(actionExecutionContext, spawn); // Each invocation of "exec" gets its own sandbox. Path sandboxPath = getSandboxRoot(); diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedStrategy.java b/src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedStrategy.java index 16a4efd1da..ec4a5e5d9b 100644 --- a/src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedStrategy.java +++ b/src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedStrategy.java @@ -21,7 +21,6 @@ import com.google.devtools.build.lib.actions.ActionExecutionContext; import com.google.devtools.build.lib.actions.ActionStatusMessage; import com.google.devtools.build.lib.actions.ExecException; import com.google.devtools.build.lib.actions.ExecutionStrategy; -import com.google.devtools.build.lib.actions.Executor; import com.google.devtools.build.lib.actions.Spawn; import com.google.devtools.build.lib.actions.SpawnActionContext; import com.google.devtools.build.lib.actions.UserExecException; @@ -114,11 +113,10 @@ public class LinuxSandboxedStrategy extends SandboxStrategy { ActionExecutionContext actionExecutionContext, AtomicReference<Class<? extends SpawnActionContext>> writeOutputFiles) throws IOException, ExecException, InterruptedException { - Executor executor = actionExecutionContext.getExecutor(); - executor + actionExecutionContext .getEventBus() .post(ActionStatusMessage.runningStrategy(spawn.getResourceOwner(), "linux-sandbox")); - SandboxHelpers.reportSubcommand(executor, spawn); + SandboxHelpers.reportSubcommand(actionExecutionContext, spawn); // Each invocation of "exec" gets its own sandbox. Path sandboxPath = getSandboxRoot(); diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/ProcessWrapperSandboxedStrategy.java b/src/main/java/com/google/devtools/build/lib/sandbox/ProcessWrapperSandboxedStrategy.java index a8f0e8063c..977916cb54 100644 --- a/src/main/java/com/google/devtools/build/lib/sandbox/ProcessWrapperSandboxedStrategy.java +++ b/src/main/java/com/google/devtools/build/lib/sandbox/ProcessWrapperSandboxedStrategy.java @@ -19,7 +19,6 @@ import com.google.devtools.build.lib.actions.ActionExecutionContext; import com.google.devtools.build.lib.actions.ActionStatusMessage; import com.google.devtools.build.lib.actions.ExecException; import com.google.devtools.build.lib.actions.ExecutionStrategy; -import com.google.devtools.build.lib.actions.Executor; import com.google.devtools.build.lib.actions.Spawn; import com.google.devtools.build.lib.actions.SpawnActionContext; import com.google.devtools.build.lib.buildtool.BuildRequest; @@ -82,13 +81,12 @@ public class ProcessWrapperSandboxedStrategy extends SandboxStrategy { ActionExecutionContext actionExecutionContext, AtomicReference<Class<? extends SpawnActionContext>> writeOutputFiles) throws ExecException, InterruptedException, IOException { - Executor executor = actionExecutionContext.getExecutor(); - executor + actionExecutionContext .getEventBus() .post( ActionStatusMessage.runningStrategy( spawn.getResourceOwner(), "processwrapper-sandbox")); - SandboxHelpers.reportSubcommand(executor, spawn); + SandboxHelpers.reportSubcommand(actionExecutionContext, spawn); // Each invocation of "exec" gets its own sandbox. Path sandboxPath = getSandboxRoot(); diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/SandboxHelpers.java b/src/main/java/com/google/devtools/build/lib/sandbox/SandboxHelpers.java index 37f2ce8e4c..e7d605fb37 100644 --- a/src/main/java/com/google/devtools/build/lib/sandbox/SandboxHelpers.java +++ b/src/main/java/com/google/devtools/build/lib/sandbox/SandboxHelpers.java @@ -20,7 +20,6 @@ import com.google.devtools.build.lib.actions.ActionExecutionContext; import com.google.devtools.build.lib.actions.ActionInput; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ExecException; -import com.google.devtools.build.lib.actions.Executor; import com.google.devtools.build.lib.actions.Spawn; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.buildtool.BuildRequest; @@ -40,16 +39,17 @@ import java.util.TreeMap; public final class SandboxHelpers { static void fallbackToNonSandboxedExecution( - Spawn spawn, ActionExecutionContext actionExecutionContext, Executor executor) + Spawn spawn, ActionExecutionContext actionExecutionContext) throws ExecException, InterruptedException { StandaloneSpawnStrategy standaloneStrategy = - Preconditions.checkNotNull(executor.getContext(StandaloneSpawnStrategy.class)); + Preconditions.checkNotNull( + actionExecutionContext.getContext(StandaloneSpawnStrategy.class)); standaloneStrategy.exec(spawn, actionExecutionContext); } - static void reportSubcommand(Executor executor, Spawn spawn) { - if (executor.reportsSubcommands()) { - executor.reportSubcommand(spawn); + static void reportSubcommand(ActionExecutionContext actionExecutionContext, Spawn spawn) { + if (actionExecutionContext.reportsSubcommands()) { + actionExecutionContext.reportSubcommand(spawn); } } @@ -68,7 +68,7 @@ public final class SandboxHelpers { spawn, executionContext.getArtifactExpander(), executionContext.getActionInputFileCache(), - executionContext.getExecutor().getContext(FilesetActionContext.class)); + executionContext.getContext(FilesetActionContext.class)); // SpawnInputExpander#getInputMapping uses ArtifactExpander#expandArtifacts to expand // middlemen and tree artifacts, which expands empty tree artifacts to no entry. However, // actions that accept TreeArtifacts as inputs generally expect that the empty directory is diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/SandboxStrategy.java b/src/main/java/com/google/devtools/build/lib/sandbox/SandboxStrategy.java index b80066bb56..fe6a581fb2 100644 --- a/src/main/java/com/google/devtools/build/lib/sandbox/SandboxStrategy.java +++ b/src/main/java/com/google/devtools/build/lib/sandbox/SandboxStrategy.java @@ -20,7 +20,6 @@ import com.google.devtools.build.lib.actions.ActionExecutionContext; import com.google.devtools.build.lib.actions.ActionExecutionMetadata; import com.google.devtools.build.lib.actions.ActionStatusMessage; import com.google.devtools.build.lib.actions.ExecException; -import com.google.devtools.build.lib.actions.Executor; import com.google.devtools.build.lib.actions.ResourceManager; import com.google.devtools.build.lib.actions.ResourceManager.ResourceHandle; import com.google.devtools.build.lib.actions.SandboxedSpawnActionContext; @@ -93,14 +92,13 @@ abstract class SandboxStrategy implements SandboxedSpawnActionContext { ActionExecutionContext actionExecutionContext, AtomicReference<Class<? extends SpawnActionContext>> writeOutputFiles) throws ExecException, InterruptedException { - Executor executor = actionExecutionContext.getExecutor(); // Certain actions can't run remotely or in a sandbox - pass them on to the standalone strategy. if (!spawn.isRemotable() || spawn.hasNoSandbox()) { - SandboxHelpers.fallbackToNonSandboxedExecution(spawn, actionExecutionContext, executor); + SandboxHelpers.fallbackToNonSandboxedExecution(spawn, actionExecutionContext); return; } - EventBus eventBus = actionExecutionContext.getExecutor().getEventBus(); + EventBus eventBus = actionExecutionContext.getEventBus(); ActionExecutionMetadata owner = spawn.getResourceOwner(); eventBus.post(ActionStatusMessage.schedulingStrategy(owner)); try (ResourceHandle ignored = @@ -126,7 +124,7 @@ abstract class SandboxStrategy implements SandboxedSpawnActionContext { SandboxRunner runner, AtomicReference<Class<? extends SpawnActionContext>> writeOutputFiles) throws ExecException, InterruptedException { - EventHandler eventHandler = actionExecutionContext.getExecutor().getEventHandler(); + EventHandler eventHandler = actionExecutionContext.getEventHandler(); ExecException execException = null; OutErr outErr = actionExecutionContext.getFileOutErr(); try { diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java index f80bf85598..df8e8e3a53 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java @@ -732,7 +732,7 @@ public final class SkyframeActionExecutor implements ActionExecutionContextFacto // Delete the outputs before executing the action, just to ensure that // the action really does produce the outputs. try { - action.prepare(context.getExecutor().getExecRoot()); + action.prepare(context.getExecRoot()); createOutputDirectories(action); } catch (IOException e) { reportError("failed to delete output files before executing action", e, action, null); diff --git a/src/main/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategy.java b/src/main/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategy.java index de47fe42d2..886fa45a33 100644 --- a/src/main/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategy.java +++ b/src/main/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategy.java @@ -20,7 +20,6 @@ import com.google.devtools.build.lib.actions.ActionInputFileCache; import com.google.devtools.build.lib.actions.ActionStatusMessage; import com.google.devtools.build.lib.actions.ExecException; import com.google.devtools.build.lib.actions.ExecutionStrategy; -import com.google.devtools.build.lib.actions.Executor; import com.google.devtools.build.lib.actions.ResourceManager; import com.google.devtools.build.lib.actions.Spawn; import com.google.devtools.build.lib.actions.SpawnActionContext; @@ -78,7 +77,7 @@ public class StandaloneSpawnStrategy implements SpawnActionContext { public void exec(final Spawn spawn, final ActionExecutionContext actionExecutionContext) throws ExecException, InterruptedException { final int timeoutSeconds = Spawns.getTimeoutSeconds(spawn); - final EventBus eventBus = actionExecutionContext.getExecutor().getEventBus(); + final EventBus eventBus = actionExecutionContext.getEventBus(); SpawnExecutionPolicy policy = new SpawnExecutionPolicy() { @Override public ActionInputFileCache getActionInputFileCache() { @@ -107,7 +106,7 @@ public class StandaloneSpawnStrategy implements SpawnActionContext { spawn, actionExecutionContext.getArtifactExpander(), actionExecutionContext.getActionInputFileCache(), - actionExecutionContext.getExecutor().getContext(FilesetActionContext.class)); + actionExecutionContext.getContext(FilesetActionContext.class)); } @Override @@ -127,9 +126,8 @@ public class StandaloneSpawnStrategy implements SpawnActionContext { } }; - Executor executor = actionExecutionContext.getExecutor(); - if (executor.reportsSubcommands()) { - executor.reportSubcommand(spawn); + if (actionExecutionContext.reportsSubcommands()) { + actionExecutionContext.reportSubcommand(spawn); } try { diff --git a/src/main/java/com/google/devtools/build/lib/worker/WorkerSpawnStrategy.java b/src/main/java/com/google/devtools/build/lib/worker/WorkerSpawnStrategy.java index e72551bef0..8db06b5c0a 100644 --- a/src/main/java/com/google/devtools/build/lib/worker/WorkerSpawnStrategy.java +++ b/src/main/java/com/google/devtools/build/lib/worker/WorkerSpawnStrategy.java @@ -31,7 +31,6 @@ import com.google.devtools.build.lib.actions.ActionStatusMessage; import com.google.devtools.build.lib.actions.ExecException; import com.google.devtools.build.lib.actions.ExecutionRequirements; import com.google.devtools.build.lib.actions.ExecutionStrategy; -import com.google.devtools.build.lib.actions.Executor; import com.google.devtools.build.lib.actions.ResourceManager; import com.google.devtools.build.lib.actions.ResourceManager.ResourceHandle; import com.google.devtools.build.lib.actions.SandboxedSpawnActionContext; @@ -112,19 +111,19 @@ public final class WorkerSpawnStrategy implements SandboxedSpawnActionContext { ActionExecutionContext actionExecutionContext, AtomicReference<Class<? extends SpawnActionContext>> writeOutputFiles) throws ExecException, InterruptedException { - Executor executor = actionExecutionContext.getExecutor(); if (!spawn.getExecutionInfo().containsKey(ExecutionRequirements.SUPPORTS_WORKERS) || !spawn.getExecutionInfo().get(ExecutionRequirements.SUPPORTS_WORKERS).equals("1")) { StandaloneSpawnStrategy standaloneStrategy = - Preconditions.checkNotNull(executor.getContext(StandaloneSpawnStrategy.class)); - executor.getEventHandler().handle( + Preconditions.checkNotNull( + actionExecutionContext.getContext(StandaloneSpawnStrategy.class)); + actionExecutionContext.getEventHandler().handle( Event.warn( String.format(ERROR_MESSAGE_PREFIX + REASON_NO_EXECUTION_INFO, spawn.getMnemonic()))); standaloneStrategy.exec(spawn, actionExecutionContext); return; } - EventBus eventBus = actionExecutionContext.getExecutor().getEventBus(); + EventBus eventBus = actionExecutionContext.getEventBus(); ActionExecutionMetadata owner = spawn.getResourceOwner(); eventBus.post(ActionStatusMessage.schedulingStrategy(owner)); try (ResourceHandle handle = @@ -139,10 +138,8 @@ public final class WorkerSpawnStrategy implements SandboxedSpawnActionContext { ActionExecutionContext actionExecutionContext, AtomicReference<Class<? extends SpawnActionContext>> writeOutputFiles) throws ExecException, InterruptedException { - Executor executor = actionExecutionContext.getExecutor(); - - if (executor.reportsSubcommands()) { - executor.reportSubcommand(spawn); + if (actionExecutionContext.reportsSubcommands()) { + actionExecutionContext.reportSubcommand(spawn); } if (Iterables.isEmpty(spawn.getToolFiles())) { diff --git a/src/main/java/com/google/devtools/build/lib/worker/WorkerTestStrategy.java b/src/main/java/com/google/devtools/build/lib/worker/WorkerTestStrategy.java index d3846945b6..6fd225e4bd 100644 --- a/src/main/java/com/google/devtools/build/lib/worker/WorkerTestStrategy.java +++ b/src/main/java/com/google/devtools/build/lib/worker/WorkerTestStrategy.java @@ -23,7 +23,6 @@ import com.google.common.hash.HashCode; import com.google.devtools.build.lib.actions.ActionExecutionContext; import com.google.devtools.build.lib.actions.ExecException; import com.google.devtools.build.lib.actions.ExecutionStrategy; -import com.google.devtools.build.lib.actions.Executor; import com.google.devtools.build.lib.actions.Spawn; import com.google.devtools.build.lib.actions.TestExecException; import com.google.devtools.build.lib.actions.UserExecException; @@ -104,7 +103,7 @@ public class WorkerTestStrategy extends StandaloneTestStrategy { actionExecutionContext, addPersistentRunnerVars(spawn.getEnvironment()), startupArgs, - actionExecutionContext.getExecutor().getExecRoot()); + actionExecutionContext.getExecRoot()); } private TestResultData execInWorker( @@ -114,10 +113,8 @@ public class WorkerTestStrategy extends StandaloneTestStrategy { List<String> startupArgs, Path execRoot) throws ExecException, InterruptedException, IOException { - Executor executor = actionExecutionContext.getExecutor(); - // TODO(kush): Remove once we're out of the experimental phase. - executor + actionExecutionContext .getEventHandler() .handle( Event.warn( @@ -128,7 +125,7 @@ public class WorkerTestStrategy extends StandaloneTestStrategy { Path testLogPath = action.getTestLog().getPath(); Worker worker = null; WorkerKey key = null; - long startTime = executor.getClock().currentTimeMillis(); + long startTime = actionExecutionContext.getClock().currentTimeMillis(); try { HashCode workerFilesHash = WorkerFilesHash.getWorkerFilesHash( action.getTools(), actionExecutionContext); @@ -167,7 +164,7 @@ public class WorkerTestStrategy extends StandaloneTestStrategy { .exception(e) .logText(data) .build(); - executor.getEventHandler().handle(Event.warn(errorMessage.toString())); + actionExecutionContext.getEventHandler().handle(Event.warn(errorMessage.toString())); throw e; } @@ -188,7 +185,7 @@ public class WorkerTestStrategy extends StandaloneTestStrategy { actionExecutionContext.getFileOutErr().getErrorStream().write( response.getOutputBytes().toByteArray()); - long duration = executor.getClock().currentTimeMillis() - startTime; + long duration = actionExecutionContext.getClock().currentTimeMillis() - startTime; builder.addTestTimes(duration); builder.setRunDurationMillis(duration); if (response.getExitCode() == 0) { @@ -204,7 +201,7 @@ public class WorkerTestStrategy extends StandaloneTestStrategy { .addFailedLogs(testLogPath.getPathString()); } TestCase details = parseTestResult( - action.resolve(actionExecutionContext.getExecutor().getExecRoot()).getXmlOutputPath()); + action.resolve(actionExecutionContext.getExecRoot()).getXmlOutputPath()); if (details != null) { builder.setTestCase(details); } |