aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google
diff options
context:
space:
mode:
authorGravatar Ulf Adams <ulfjack@google.com>2017-02-01 11:48:07 +0000
committerGravatar Yun Peng <pcloudy@google.com>2017-02-01 14:30:05 +0000
commit62dbdfec3d7f6effc182f2e15f84acf0b6fa2f72 (patch)
tree15d686ea533277fa0ae18b9552b62c843172e4af /src/main/java/com/google
parentbef4fbed3d22a976b895a3f75ad41699747c286e (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')
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/BaseSpawn.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/DelegateSpawn.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/Executor.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/Spawn.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/exec/BlazeExecutor.java19
-rw-r--r--src/main/java/com/google/devtools/build/lib/sandbox/SandboxHelpers.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategy.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/worker/WorkerSpawnStrategy.java9
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")