diff options
author | 2017-02-01 11:48:07 +0000 | |
---|---|---|
committer | 2017-02-01 14:30:05 +0000 | |
commit | 62dbdfec3d7f6effc182f2e15f84acf0b6fa2f72 (patch) | |
tree | 15d686ea533277fa0ae18b9552b62c843172e4af /src/main/java/com/google | |
parent | bef4fbed3d22a976b895a3f75ad41699747c286e (diff) |
Simplify the Spawn interface, update Executor interface
Drop the Spawn.getOwner() method, which was duplicating functionality
already available through Spawn.getResourceOwner(), in favor of the
latter. In order to do that, change Executor.reportSubcommand to take
a Spawn instance instead, which in turn requires updating all call
sites.
This is part of establishing Spawn as an abstraction for lower-level
local and remote execution in all cases instead of passing args, env,
input/output files and possibly other metadata as individual method
parameters to the underlying implementations.
In order for that to be maintainable, Spawn should be light-weight and
easy to construct correctly, and not contain too much unnecessary data.
--
PiperOrigin-RevId: 146224914
MOS_MIGRATED_REVID=146224914
Diffstat (limited to 'src/main/java/com/google')
8 files changed, 18 insertions, 41 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/actions/BaseSpawn.java b/src/main/java/com/google/devtools/build/lib/actions/BaseSpawn.java index d98ec9ff83..6fd5966e26 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/BaseSpawn.java +++ b/src/main/java/com/google/devtools/build/lib/actions/BaseSpawn.java @@ -185,11 +185,6 @@ public class BaseSpawn implements Spawn { } @Override - public ActionOwner getOwner() { - return action.getOwner(); - } - - @Override public String getMnemonic() { return action.getMnemonic(); } diff --git a/src/main/java/com/google/devtools/build/lib/actions/DelegateSpawn.java b/src/main/java/com/google/devtools/build/lib/actions/DelegateSpawn.java index 41c278087d..503979c2a2 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/DelegateSpawn.java +++ b/src/main/java/com/google/devtools/build/lib/actions/DelegateSpawn.java @@ -97,11 +97,6 @@ public class DelegateSpawn implements Spawn { } @Override - public ActionOwner getOwner() { - return spawn.getOwner(); - } - - @Override public String getMnemonic() { return spawn.getMnemonic(); } 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 346623c69a..ee2e7029f2 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 @@ -83,7 +83,7 @@ public interface Executor { * Report a subcommand event to this Executor's Reporter and, if action * logging is enabled, post it on its EventBus. */ - void reportSubcommand(String reason, String message); + void reportSubcommand(Spawn spawn); /** * An event listener to report messages to. Errors that signal a action failure should diff --git a/src/main/java/com/google/devtools/build/lib/actions/Spawn.java b/src/main/java/com/google/devtools/build/lib/actions/Spawn.java index cf01172173..26f636b806 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/Spawn.java +++ b/src/main/java/com/google/devtools/build/lib/actions/Spawn.java @@ -122,11 +122,6 @@ public interface Spawn { ResourceSet getLocalResources(); /** - * Returns the owner for this action. Production code should supply a non-null owner. - */ - ActionOwner getOwner(); - - /** * Returns a mnemonic (string constant) for this kind of spawn. */ String getMnemonic(); 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 3d25dba0b6..3f7e07075b 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,10 +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; @@ -140,12 +144,17 @@ public final class BlazeExecutor implements Executor { return showSubcommands; } - /** - * Report a subcommand event to this Executor's Reporter and, if action - * logging is enabled, post it on its EventBus. - */ @Override - public void reportSubcommand(String reason, String message) { + 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)); } 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 88c6557e99..bdedfade73 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 @@ -22,11 +22,9 @@ 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.Spawn; -import com.google.devtools.build.lib.actions.Spawns; import com.google.devtools.build.lib.analysis.BlazeDirectories; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.buildtool.BuildRequest; -import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.standalone.StandaloneSpawnStrategy; import com.google.devtools.build.lib.util.Preconditions; import com.google.devtools.build.lib.vfs.Path; @@ -47,12 +45,7 @@ public final class SandboxHelpers { static void reportSubcommand(Executor executor, Spawn spawn) { if (executor.reportsSubcommands()) { - executor.reportSubcommand( - Label.print(spawn.getOwner().getLabel()) - + " [" - + spawn.getResourceOwner().prettyPrint() - + "]", - Spawns.asShellCommand(spawn, executor.getExecRoot())); + executor.reportSubcommand(spawn); } } 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 040a6548b0..9dc4b757aa 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 @@ -23,7 +23,6 @@ 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.actions.UserExecException; -import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.rules.apple.AppleConfiguration; import com.google.devtools.build.lib.rules.apple.AppleHostInfo; import com.google.devtools.build.lib.rules.apple.DottedVersion; @@ -68,9 +67,7 @@ public class StandaloneSpawnStrategy implements SpawnActionContext { Executor executor = actionExecutionContext.getExecutor(); if (executor.reportsSubcommands()) { - executor.reportSubcommand( - Label.print(spawn.getOwner().getLabel()) + " [" + spawn.getResourceOwner().prettyPrint() - + "]", Spawns.asShellCommand(spawn, executor.getExecRoot())); + executor.reportSubcommand(spawn); } executor 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 45845464a4..dab387db1d 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 @@ -34,10 +34,8 @@ import com.google.devtools.build.lib.actions.Executor; import com.google.devtools.build.lib.actions.SandboxedSpawnActionContext; 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.actions.UserExecException; import com.google.devtools.build.lib.analysis.BlazeDirectories; -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.sandbox.SandboxHelpers; @@ -211,12 +209,7 @@ public final class WorkerSpawnStrategy implements SandboxedSpawnActionContext { Preconditions.checkNotNull(executor.getContext(StandaloneSpawnStrategy.class)); if (executor.reportsSubcommands()) { - executor.reportSubcommand( - Label.print(spawn.getOwner().getLabel()) - + " [" - + spawn.getResourceOwner().prettyPrint() - + "]", - Spawns.asShellCommand(spawn, executor.getExecRoot())); + executor.reportSubcommand(spawn); } if (!spawn.getExecutionInfo().containsKey("supports-workers") |