aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Philipp Wollermann <philwo@google.com>2016-02-03 13:18:26 +0000
committerGravatar David Chen <dzc@google.com>2016-02-03 22:06:30 +0000
commit9446e9b55e01aee0425a1f21b47b98df55043c6f (patch)
tree59a0bdbfa93b133ed5c53ec41de9af165319a927
parent0d1a53cf5614d621518914682ec44c6f20a27ab7 (diff)
Make The Build Faster: Drop the describeStrategy() and strategyLocality() methods, as we can simply pass an ActionStatusMessage to the EventBus instead. All SpawnActionContexts now send an appropriate message when they execute a Spawn.
This also gets rid of the idiom that an Action knows which strategy will be used to execute it - this decision and knowledge belongs to the executor, not the action. -- MOS_MIGRATED_REVID=113731846
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/ActionExecutionStatusReporter.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/ActionMetadata.java13
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/ActionStatusMessage.java18
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/FailAction.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/MiddlemanAction.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/ResourceManager.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/SpawnActionContext.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/PseudoAction.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/SymlinkTreeAction.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/actions/AbstractFileWriteAction.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/actions/FileWriteActionContext.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkAction.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/BazelWorkspaceStatusModule.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/exec/FileWriteStrategy.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionContext.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionContext.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/ExtractInclusionAction.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/FdoStubAction.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/SolibSymlinkAction.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategy.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnLinkStrategy.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/test/ExclusiveTestStrategy.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/test/StandaloneTestStrategy.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/test/TestActionContext.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/test/TestRunnerAction.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/test/TestStrategy.java13
-rw-r--r--src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedStrategy.java17
-rw-r--r--src/main/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategy.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/worker/WorkerSpawnStrategy.java7
-rw-r--r--src/test/java/com/google/devtools/build/lib/actions/ActionExecutionStatusReporterTest.java29
-rw-r--r--src/test/java/com/google/devtools/build/lib/actions/ResourceManagerTest.java5
-rw-r--r--src/test/java/com/google/devtools/build/lib/actions/util/ActionsTestUtil.java5
-rw-r--r--src/test/java/com/google/devtools/build/lib/actions/util/TestAction.java5
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestUtil.java5
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/ActionDataTest.java10
-rw-r--r--src/test/java/com/google/devtools/build/lib/skyframe/SkyframeAwareActionTest.java10
41 files changed, 43 insertions, 236 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ActionExecutionStatusReporter.java b/src/main/java/com/google/devtools/build/lib/actions/ActionExecutionStatusReporter.java
index 8a29b08ea0..7a2a410d85 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/ActionExecutionStatusReporter.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/ActionExecutionStatusReporter.java
@@ -117,20 +117,13 @@ public final class ActionExecutionStatusReporter {
}
public void setRunningFromBuildData(ActionMetadata action) {
- updateStatus(ActionStatusMessage.runningStrategy(action));
+ updateStatus(ActionStatusMessage.runningStrategy(action, "unknown"));
}
@Subscribe
public void updateStatus(ActionStatusMessage statusMsg) {
String message = statusMsg.getMessage();
ActionMetadata action = statusMsg.getActionMetadata();
- if (statusMsg.needsStrategy()) {
- String strategy = action.describeStrategy(executor);
- if (strategy == null) {
- return;
- }
- message = String.format(message, strategy);
- }
setStatus(action, message);
}
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ActionMetadata.java b/src/main/java/com/google/devtools/build/lib/actions/ActionMetadata.java
index c8c82c86ca..08b501c4c6 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/ActionMetadata.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/ActionMetadata.java
@@ -61,19 +61,6 @@ public interface ActionMetadata {
String prettyPrint();
/**
- * Returns a string that can be used to describe the execution strategy.
- * For example, "local".
- *
- * May return null if the action chooses to update its strategy
- * locality "manually", via ActionLocalityMessage.
- *
- * @param executor the application-specific value passed to the
- * executor parameter of the top-level call to
- * Builder.buildArtifacts().
- */
- String describeStrategy(Executor executor);
-
- /**
* Returns true iff the getInputs set is known to be complete.
*
* <p>For most Actions, this always returns true, but in some cases (e.g. C++ compilation), inputs
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ActionStatusMessage.java b/src/main/java/com/google/devtools/build/lib/actions/ActionStatusMessage.java
index 45de35d48d..144e862297 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/ActionStatusMessage.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/ActionStatusMessage.java
@@ -24,7 +24,7 @@ public class ActionStatusMessage {
private final String message;
public static final String PREPARING = "Preparing";
- public ActionStatusMessage(ActionMetadata action, String message) {
+ private ActionStatusMessage(ActionMetadata action, String message) {
this.action = action;
this.message = message;
}
@@ -37,11 +37,6 @@ public class ActionStatusMessage {
return message;
}
- /** Returns whether the message needs further interpolation of a 'strategy' when printed. */
- public boolean needsStrategy() {
- return false;
- }
-
/** Creates "Analyzing" status message. */
public static ActionStatusMessage analysisStrategy(ActionMetadata action) {
return new ActionStatusMessage(action, "Analyzing");
@@ -57,13 +52,8 @@ public class ActionStatusMessage {
return new ActionStatusMessage(action, "Scheduling");
}
- /** Creates "Running (%s)" status message (needs strategy interpolated). */
- public static ActionStatusMessage runningStrategy(ActionMetadata action) {
- return new ActionStatusMessage(action, "Running (%s)") {
- @Override
- public boolean needsStrategy() {
- return true;
- }
- };
+ /** Creates "Running (strategy)" status message. */
+ public static ActionStatusMessage runningStrategy(ActionMetadata action, String strategy) {
+ return new ActionStatusMessage(action, String.format("Running (%s)", strategy));
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/actions/FailAction.java b/src/main/java/com/google/devtools/build/lib/actions/FailAction.java
index 191c657898..da6f599d37 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/FailAction.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/FailAction.java
@@ -62,11 +62,6 @@ public final class FailAction extends AbstractAction {
}
@Override
- public String describeStrategy(Executor executor) {
- return "";
- }
-
- @Override
public String getMnemonic() {
return "Fail";
}
diff --git a/src/main/java/com/google/devtools/build/lib/actions/MiddlemanAction.java b/src/main/java/com/google/devtools/build/lib/actions/MiddlemanAction.java
index bc710f09fc..8c25e4d223 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/MiddlemanAction.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/MiddlemanAction.java
@@ -86,11 +86,6 @@ public class MiddlemanAction extends AbstractAction {
}
@Override
- public String describeStrategy(Executor executor) {
- return "";
- }
-
- @Override
public String getMnemonic() {
return MIDDLEMAN_MNEMONIC;
}
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ResourceManager.java b/src/main/java/com/google/devtools/build/lib/actions/ResourceManager.java
index c262294a4b..e87e87e697 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/ResourceManager.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/ResourceManager.java
@@ -265,7 +265,7 @@ public class ResourceManager {
private void acquired(ActionMetadata owner) {
if (eventBus != null) {
// Null only in tests.
- eventBus.post(ActionStatusMessage.runningStrategy(owner));
+ eventBus.post(ActionStatusMessage.runningStrategy(owner, "unknown"));
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/actions/SpawnActionContext.java b/src/main/java/com/google/devtools/build/lib/actions/SpawnActionContext.java
index cf33786f8c..80ef4a505b 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/SpawnActionContext.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/SpawnActionContext.java
@@ -24,9 +24,6 @@ public interface SpawnActionContext extends Executor.ActionContext {
void exec(Spawn spawn, ActionExecutionContext actionExecutionContext)
throws ExecException, InterruptedException;
- /** Returns the locality of running the spawn, i.e., "local". */
- String strategyLocality(String mnemonic, boolean remotable);
-
/**
* This implements a tri-state mode. There are three possible cases: (1) implementations of this
* class can unconditionally execute spawns locally, (2) they can follow whatever is set for the
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/PseudoAction.java b/src/main/java/com/google/devtools/build/lib/analysis/PseudoAction.java
index 633258b310..c482f2e615 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/PseudoAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/PseudoAction.java
@@ -52,11 +52,6 @@ public class PseudoAction<InfoType extends MessageLite> extends AbstractAction {
this.info = info;
}
- @Override
- public String describeStrategy(Executor executor) {
- return null;
- }
-
@Override
public void execute(ActionExecutionContext actionExecutionContext)
throws ActionExecutionException {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/SymlinkTreeAction.java b/src/main/java/com/google/devtools/build/lib/analysis/SymlinkTreeAction.java
index 7501f09189..17591e0265 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/SymlinkTreeAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/SymlinkTreeAction.java
@@ -111,11 +111,6 @@ public class SymlinkTreeAction extends AbstractAction {
}
@Override
- public String describeStrategy(Executor executor) {
- return "local"; // Symlink tree is always generated locally.
- }
-
- @Override
public void execute(
ActionExecutionContext actionExecutionContext)
throws ActionExecutionException, InterruptedException {
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 7f361a4ade..2c5daad8b0 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
@@ -123,11 +123,6 @@ public abstract class AbstractFileWriteAction extends AbstractAction {
return true;
}
- @Override
- public final String describeStrategy(Executor executor) {
- return executor.getContext(FileWriteActionContext.class).strategyLocality(this);
- }
-
private FileWriteActionContext getStrategy(Executor executor) {
return executor.getContext(FileWriteActionContext.class);
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/FileWriteActionContext.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/FileWriteActionContext.java
index 4014322fa7..e019fb5826 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/FileWriteActionContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/FileWriteActionContext.java
@@ -37,8 +37,4 @@ public interface FileWriteActionContext extends ActionContext {
*/
ResourceSet estimateResourceConsumption(AbstractFileWriteAction action);
- /**
- * Returns where the action actually runs.
- */
- String strategyLocality(AbstractFileWriteAction action);
}
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 251d81a5ca..d648662538 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
@@ -400,11 +400,6 @@ public class SpawnAction extends AbstractAction {
return executionInfo;
}
- @Override
- public String describeStrategy(Executor executor) {
- return getContext(executor).strategyLocality(getMnemonic(), isRemotable());
- }
-
protected SpawnActionContext getContext(Executor executor) {
return executor.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 255e51d4ec..c6ac8be4bf 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
@@ -122,9 +122,4 @@ public class SymlinkAction extends AbstractAction {
protected String getRawProgressMessage() {
return progressMessage;
}
-
- @Override
- public String describeStrategy(Executor executor) {
- return "local";
- }
}
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 72e7081c20..c47388b6da 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
@@ -102,11 +102,6 @@ public class BazelWorkspaceStatusModule extends BlazeModule {
.build();
}
- @Override
- public String describeStrategy(Executor executor) {
- return "";
- }
-
private String getAdditionalWorkspaceStatus(ActionExecutionContext actionExecutionContext)
throws ActionExecutionException {
try {
diff --git a/src/main/java/com/google/devtools/build/lib/exec/FileWriteStrategy.java b/src/main/java/com/google/devtools/build/lib/exec/FileWriteStrategy.java
index 9c476bc648..1359363607 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/FileWriteStrategy.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/FileWriteStrategy.java
@@ -71,9 +71,4 @@ public final class FileWriteStrategy implements FileWriteActionContext {
public ResourceSet estimateResourceConsumption(AbstractFileWriteAction action) {
return action.estimateResourceConsumptionLocal();
}
-
- @Override
- public String strategyLocality(AbstractFileWriteAction action) {
- return "local";
- }
}
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 c908bcda5d..ead89f63e3 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
@@ -482,11 +482,6 @@ public class CppCompileAction extends AbstractAction implements IncludeScannable
return cppCompileCommandLine.dotdFile;
}
- @Override
- public String describeStrategy(Executor executor) {
- return executor.getContext(actionContext).strategyLocality();
- }
-
@VisibleForTesting
public CppCompilationContext getContext() {
return context;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionContext.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionContext.java
index f0e423b37d..fe59f8e68b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionContext.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionContext.java
@@ -70,11 +70,6 @@ public interface CppCompileActionContext extends ActionContext {
ResourceSet estimateResourceConsumption(CppCompileAction action);
/**
- * Returns where the action actually runs.
- */
- String strategyLocality();
-
- /**
* Returns whether include scanning needs to be run.
*/
boolean needsIncludeScanning();
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 c4b240cfb8..95d6379f18 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
@@ -287,11 +287,6 @@ public final class CppLinkAction extends AbstractAction {
}
}
- @Override
- public String describeStrategy(Executor executor) {
- return fake ? "fake,local" : executor.getContext(CppLinkActionContext.class).strategyLocality();
- }
-
// Don't forget to update FAKE_LINK_GUID if you modify this method.
@ThreadCompatible
private void executeFake()
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionContext.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionContext.java
index 6e97cfc12a..cf64db187f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionContext.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionContext.java
@@ -25,10 +25,6 @@ import com.google.devtools.build.lib.actions.ResourceSet;
*/
@ActionContextMarker(name = "C++ link")
public interface CppLinkActionContext extends ActionContext {
- /**
- * Returns where the action actually runs.
- */
- String strategyLocality();
/**
* Returns the estimated resource consumption of the action.
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 36d8d7dc7c..82a3a16f69 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
@@ -55,11 +55,6 @@ final class ExtractInclusionAction extends AbstractAction {
}
@Override
- public String describeStrategy(Executor executor) {
- return executor.getContext(CppCompileActionContext.class).strategyLocality();
- }
-
- @Override
public String getMnemonic() {
return "GrepIncludes";
}
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 b97f481964..b92e61496d 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
@@ -216,11 +216,6 @@ public class FakeCppCompileAction extends CppCompileAction {
public String getMnemonic() { return "FakeCppCompile"; }
@Override
- public String describeStrategy(Executor executor) {
- return "fake";
- }
-
- @Override
public ResourceSet estimateResourceConsumptionLocal() {
return ResourceSet.createWithRamCpuIo(/*memoryMb=*/1, /*cpuUsage=*/0.1, /*ioUsage=*/0.0);
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoStubAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoStubAction.java
index 169f664780..bee74f7092 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoStubAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoStubAction.java
@@ -38,11 +38,6 @@ public class FdoStubAction extends AbstractAction {
}
@Override
- public String describeStrategy(Executor executor) {
- return "";
- }
-
- @Override
public void execute(ActionExecutionContext actionExecutionContext) {
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/SolibSymlinkAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/SolibSymlinkAction.java
index efe9b313e4..2e1dd42375 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/SolibSymlinkAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/SolibSymlinkAction.java
@@ -109,11 +109,6 @@ public final class SolibSymlinkAction extends AbstractAction {
public String getMnemonic() { return "SolibSymlink"; }
@Override
- public String describeStrategy(Executor executor) {
- return "local";
- }
-
- @Override
protected String getRawProgressMessage() { return null; }
/**
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 83cd41a6a5..4a97ce0e96 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
@@ -36,10 +36,6 @@ import java.util.Collection;
name = {"spawn"}
)
public class SpawnGccStrategy implements CppCompileActionContext {
- @Override
- public String strategyLocality() {
- return "spawn";
- }
@Override
public boolean needsIncludeScanning() {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnLinkStrategy.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnLinkStrategy.java
index b64c5a7b9c..f9d494be4b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnLinkStrategy.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnLinkStrategy.java
@@ -50,11 +50,6 @@ public final class SpawnLinkStrategy implements CppLinkActionContext {
}
@Override
- public String strategyLocality() {
- return "spawn";
- }
-
- @Override
public ResourceSet estimateResourceConsumption(CppLinkAction action) {
return action.estimateResourceConsumptionLocal();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
index f1a890877d..a436124a72 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
@@ -412,11 +412,6 @@ public class JavaCompileAction extends AbstractAction {
}
@Override
- public String describeStrategy(Executor executor) {
- return getContext(executor).strategyLocality(getMnemonic(), true);
- }
-
- @Override
public ResourceSet estimateResourceConsumption(Executor executor) {
if (getContext(executor).isRemotable(getMnemonic(), true)) {
return ResourceSet.ZERO;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/test/ExclusiveTestStrategy.java b/src/main/java/com/google/devtools/build/lib/rules/test/ExclusiveTestStrategy.java
index b3b5fbd67c..8ee7f3efb7 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/test/ExclusiveTestStrategy.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/test/ExclusiveTestStrategy.java
@@ -47,9 +47,4 @@ public class ExclusiveTestStrategy implements TestActionContext {
Path execRoot, TestRunnerAction action, TestResultData cached) throws IOException {
return parent.newCachedTestResult(execRoot, action, cached);
}
-
- @Override
- public String strategyLocality(TestRunnerAction testRunnerAction) {
- return "exclusive";
- }
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/test/StandaloneTestStrategy.java b/src/main/java/com/google/devtools/build/lib/rules/test/StandaloneTestStrategy.java
index 59e752bf3d..1cddbf6791 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/test/StandaloneTestStrategy.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/test/StandaloneTestStrategy.java
@@ -266,9 +266,6 @@ public class StandaloneTestStrategy extends TestStrategy {
}
@Override
- public String strategyLocality(TestRunnerAction action) { return "standalone"; }
-
- @Override
public TestResult newCachedTestResult(
Path execRoot, TestRunnerAction action, TestResultData data) {
return new TestResult(action, data, /*cached*/ true);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/test/TestActionContext.java b/src/main/java/com/google/devtools/build/lib/rules/test/TestActionContext.java
index 75cbc5bf79..68bf3cf9dd 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/test/TestActionContext.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/test/TestActionContext.java
@@ -34,11 +34,6 @@ public interface TestActionContext extends ActionContext {
ActionExecutionContext actionExecutionContext) throws ExecException, InterruptedException;
/**
- * String describing where the action will run.
- */
- String strategyLocality(TestRunnerAction action);
-
- /**
* Creates a cached test result.
*/
TestResult newCachedTestResult(Path execRoot, TestRunnerAction action, TestResultData cached)
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 57ddcf9c56..9f09c90319 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
@@ -305,11 +305,6 @@ public class TestRunnerAction extends AbstractAction implements NotifyOnActionCa
return "Testing " + getTestName();
}
- @Override
- public String describeStrategy(Executor executor) {
- return executor.getContext(TestActionContext.class).strategyLocality(this);
- }
-
/**
* Deletes <b>all</b> possible test outputs.
*
diff --git a/src/main/java/com/google/devtools/build/lib/rules/test/TestStrategy.java b/src/main/java/com/google/devtools/build/lib/rules/test/TestStrategy.java
index 93585bccf9..3275791cf1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/test/TestStrategy.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/test/TestStrategy.java
@@ -147,19 +147,6 @@ public abstract class TestStrategy implements TestActionContext {
public abstract void exec(TestRunnerAction action, ActionExecutionContext actionExecutionContext)
throws ExecException, InterruptedException;
- @Override
- public abstract String strategyLocality(TestRunnerAction action);
-
- /**
- * Callback for determining the strategy locality.
- *
- * @param action the test action
- * @param localRun whether to run it locally
- */
- protected String strategyLocality(TestRunnerAction action, boolean localRun) {
- return strategyLocality(action);
- }
-
/**
* Returns mutable map of default testing shell environment. By itself it is incomplete and is
* modified further by the specific test strategy implementations (mostly due to the fact that
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 b15744955d..9148014a5e 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
@@ -22,6 +22,7 @@ import com.google.devtools.build.lib.Constants;
import com.google.devtools.build.lib.actions.ActionExecutionContext;
import com.google.devtools.build.lib.actions.ActionInput;
import com.google.devtools.build.lib.actions.ActionInputHelper;
+import com.google.devtools.build.lib.actions.ActionStatusMessage;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.EnvironmentalExecException;
import com.google.devtools.build.lib.actions.ExecException;
@@ -95,20 +96,24 @@ public class LinuxSandboxedStrategy implements SpawnActionContext {
@Override
public void exec(Spawn spawn, ActionExecutionContext actionExecutionContext)
throws ExecException {
- Executor executor = actionExecutionContext.getExecutor();
-
// Certain actions can't run remotely or in a sandbox - pass them on to the standalone strategy.
if (!spawn.isRemotable()) {
standaloneStrategy.exec(spawn, actionExecutionContext);
return;
}
+ Executor executor = actionExecutionContext.getExecutor();
+
if (executor.reportsSubcommands()) {
executor.reportSubcommand(
Label.print(spawn.getOwner().getLabel()) + " [" + spawn.getResourceOwner().prettyPrint()
+ "]", spawn.asShellCommand(executor.getExecRoot()));
}
+ executor
+ .getEventBus()
+ .post(ActionStatusMessage.runningStrategy(spawn.getResourceOwner(), "sandbox"));
+
FileOutErr outErr = actionExecutionContext.getFileOutErr();
// The execId is a unique ID just for this invocation of "exec".
@@ -492,12 +497,12 @@ public class LinuxSandboxedStrategy implements SpawnActionContext {
}
@Override
- public String strategyLocality(String mnemonic, boolean remotable) {
- return "linux-sandboxing";
+ public boolean isRemotable(String mnemonic, boolean remotable) {
+ return false;
}
@Override
- public boolean isRemotable(String mnemonic, boolean remotable) {
- return false;
+ public String toString() {
+ return "sandboxed";
}
}
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 b7e345caa9..b2f98a36d5 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
@@ -15,6 +15,7 @@ package com.google.devtools.build.lib.standalone;
import com.google.common.collect.ImmutableMap;
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;
@@ -62,12 +63,17 @@ public class StandaloneSpawnStrategy implements SpawnActionContext {
ActionExecutionContext actionExecutionContext)
throws ExecException {
Executor executor = actionExecutionContext.getExecutor();
+
if (executor.reportsSubcommands()) {
executor.reportSubcommand(
Label.print(spawn.getOwner().getLabel()) + " [" + spawn.getResourceOwner().prettyPrint()
+ "]", spawn.asShellCommand(executor.getExecRoot()));
}
+ executor
+ .getEventBus()
+ .post(ActionStatusMessage.runningStrategy(spawn.getResourceOwner(), "standalone"));
+
int timeout = -1;
String timeoutStr = spawn.getExecutionInfo().get("timeout");
if (timeoutStr != null) {
@@ -125,7 +131,7 @@ public class StandaloneSpawnStrategy implements SpawnActionContext {
}
@Override
- public String strategyLocality(String mnemonic, boolean remotable) {
+ public String toString() {
return "standalone";
}
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 22645109d4..c079a8d941 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
@@ -27,6 +27,7 @@ import com.google.devtools.build.lib.actions.ActionExecutionContext;
import com.google.devtools.build.lib.actions.ActionInput;
import com.google.devtools.build.lib.actions.ActionInputFileCache;
import com.google.devtools.build.lib.actions.ActionInputHelper;
+import com.google.devtools.build.lib.actions.ActionStatusMessage;
import com.google.devtools.build.lib.actions.ChangedFilesMessage;
import com.google.devtools.build.lib.actions.ExecException;
import com.google.devtools.build.lib.actions.ExecutionStrategy;
@@ -138,6 +139,10 @@ final class WorkerSpawnStrategy implements SpawnActionContext {
return;
}
+ executor
+ .getEventBus()
+ .post(ActionStatusMessage.runningStrategy(spawn.getResourceOwner(), "worker"));
+
FileOutErr outErr = actionExecutionContext.getFileOutErr();
ImmutableList<String> args = ImmutableList.<String>builder()
@@ -272,7 +277,7 @@ final class WorkerSpawnStrategy implements SpawnActionContext {
}
@Override
- public String strategyLocality(String mnemonic, boolean remotable) {
+ public String toString() {
return "worker";
}
diff --git a/src/test/java/com/google/devtools/build/lib/actions/ActionExecutionStatusReporterTest.java b/src/test/java/com/google/devtools/build/lib/actions/ActionExecutionStatusReporterTest.java
index b5a69d83fc..04b17ff23e 100644
--- a/src/test/java/com/google/devtools/build/lib/actions/ActionExecutionStatusReporterTest.java
+++ b/src/test/java/com/google/devtools/build/lib/actions/ActionExecutionStatusReporterTest.java
@@ -70,11 +70,8 @@ public class ActionExecutionStatusReporterTest {
private EventBus eventBus;
private MockClock clock = new MockClock();
- private Action mockAction(String progressMessage) { return mockAction(progressMessage, false); }
-
- private Action mockAction(String progressMessage, boolean remote) {
+ private Action mockAction(String progressMessage) {
Action action = Mockito.mock(Action.class);
- when(action.describeStrategy(null)).thenReturn(remote ? "remote" : "something else");
when(action.getProgressMessage()).thenReturn(progressMessage);
if (progressMessage == null) {
when(action.prettyPrint()).thenReturn("default message");
@@ -122,9 +119,9 @@ public class ActionExecutionStatusReporterTest {
verifyWarningOutput("Still waiting for unfinished jobs");
setScheduling(mockAction("action2"));
clock.advance();
- setRunning(mockAction("action3", true));
+ setRunning(mockAction("action3"), "remote");
clock.advance();
- setRunning(mockAction("action4", false));
+ setRunning(mockAction("action4"), "something else");
verifyOutput("Still waiting for 4 jobs to complete:",
"Preparing:", "action1, 3 s",
"Running (remote):", "action3, 1 s",
@@ -139,7 +136,7 @@ public class ActionExecutionStatusReporterTest {
@Test
public void testSingleAction() throws Exception {
- Action action = mockAction("action1", true);
+ Action action = mockAction("action1");
verifyNoOutput();
setPreparing(action);
clock.advanceBy(1200);
@@ -150,7 +147,7 @@ public class ActionExecutionStatusReporterTest {
clock.advanceBy(1200);
// Only started *scheduling* 1200 ms ago, not 6200 ms ago.
verifyOutput("Still waiting for 1 job to complete:", "Scheduling:", "action1, 1 s");
- setRunning(action);
+ setRunning(action, "remote");
clock.advanceBy(3000);
// Only started *running* 3000 ms ago, not 4200 ms ago.
verifyOutput("Still waiting for 1 job to complete:", "Running (remote):", "action1, 3 s");
@@ -160,7 +157,7 @@ public class ActionExecutionStatusReporterTest {
@Test
public void testDynamicUpdate() throws Exception {
- Action action = mockAction("action1", true);
+ Action action = mockAction("action1");
verifyNoOutput();
setPreparing(action);
clock.advance();
@@ -168,7 +165,7 @@ public class ActionExecutionStatusReporterTest {
setScheduling(action);
clock.advance();
verifyOutput("Still waiting for 1 job to complete:", "Scheduling:", "action1, 1 s");
- setRunning(action);
+ setRunning(action, "remote");
clock.advance();
verifyOutput("Still waiting for 1 job to complete:", "Running (remote):", "action1, 1 s");
clock.advance();
@@ -184,8 +181,8 @@ public class ActionExecutionStatusReporterTest {
public void testGroups() throws Exception {
verifyNoOutput();
List<Action> actions = ImmutableList.of(
- mockAction("remote1", true), mockAction("remote2", true), mockAction("remote3", true),
- mockAction("local1", false), mockAction("local2", false), mockAction("local3", false));
+ mockAction("remote1"), mockAction("remote2"), mockAction("remote3"),
+ mockAction("local1"), mockAction("local2"), mockAction("local3"));
for (Action a : actions) {
setScheduling(a);
@@ -198,7 +195,7 @@ public class ActionExecutionStatusReporterTest {
"local1, 3 s", "local2, 2 s", "local3, 1 s");
for (Action a : actions) {
- setRunning(a);
+ setRunning(a, a.getProgressMessage().startsWith("remote") ? "remote" : "something else");
clock.advanceBy(2000);
}
@@ -228,7 +225,7 @@ public class ActionExecutionStatusReporterTest {
"a6, 95 s", "a7, 94 s", "a8, 93 s", "a9, 92 s", "... 91 more jobs");
for (int i = 0; i < 5; i++) {
- setRunning(actions.get(i));
+ setRunning(actions.get(i), "something else");
clock.advance();
}
verifyOutput("Still waiting for 100 jobs to complete:",
@@ -285,7 +282,7 @@ public class ActionExecutionStatusReporterTest {
eventBus.post(ActionStatusMessage.preparingStrategy(action));
}
- private void setRunning(ActionMetadata action) {
- eventBus.post(ActionStatusMessage.runningStrategy(action));
+ private void setRunning(ActionMetadata action, String strategy) {
+ eventBus.post(ActionStatusMessage.runningStrategy(action, strategy));
}
}
diff --git a/src/test/java/com/google/devtools/build/lib/actions/ResourceManagerTest.java b/src/test/java/com/google/devtools/build/lib/actions/ResourceManagerTest.java
index ef096adb11..d945c80bd8 100644
--- a/src/test/java/com/google/devtools/build/lib/actions/ResourceManagerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/actions/ResourceManagerTest.java
@@ -347,11 +347,6 @@ public class ResourceManagerTest {
}
@Override
- public String describeStrategy(Executor executor) {
- throw new IllegalStateException();
- }
-
- @Override
public boolean inputsKnown() {
throw new IllegalStateException();
}
diff --git a/src/test/java/com/google/devtools/build/lib/actions/util/ActionsTestUtil.java b/src/test/java/com/google/devtools/build/lib/actions/util/ActionsTestUtil.java
index 4c7ac0b3d7..305188e693 100644
--- a/src/test/java/com/google/devtools/build/lib/actions/util/ActionsTestUtil.java
+++ b/src/test/java/com/google/devtools/build/lib/actions/util/ActionsTestUtil.java
@@ -219,11 +219,6 @@ public final class ActionsTestUtil {
}
@Override
- public String describeStrategy(Executor executor) {
- return "";
- }
-
- @Override
public void execute(ActionExecutionContext actionExecutionContext) {
}
diff --git a/src/test/java/com/google/devtools/build/lib/actions/util/TestAction.java b/src/test/java/com/google/devtools/build/lib/actions/util/TestAction.java
index 61f092f6cf..4b5485dba4 100644
--- a/src/test/java/com/google/devtools/build/lib/actions/util/TestAction.java
+++ b/src/test/java/com/google/devtools/build/lib/actions/util/TestAction.java
@@ -128,11 +128,6 @@ public class TestAction extends AbstractAction {
}
@Override
- public String describeStrategy(Executor executor) {
- return "";
- }
-
- @Override
protected String computeKey() {
List<String> outputsList = new ArrayList<>();
for (Artifact output : getOutputs()) {
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestUtil.java b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestUtil.java
index 98873a2f48..f74d6e779f 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestUtil.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestUtil.java
@@ -197,11 +197,6 @@ public final class AnalysisTestUtil {
}
@Override
- public String describeStrategy(Executor executor) {
- return "";
- }
-
- @Override
public void execute(ActionExecutionContext actionExecutionContext)
throws ActionExecutionException {
try {
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ActionDataTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/ActionDataTest.java
index 74c987a4b8..763d1fa1e5 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/ActionDataTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/ActionDataTest.java
@@ -79,11 +79,6 @@ public class ActionDataTest extends TimestampBuilderTestCase {
}
@Override
- public String describeStrategy(Executor executor) {
- return "";
- }
-
- @Override
public String getMnemonic() {
return "MyAction";
}
@@ -145,11 +140,6 @@ public class ActionDataTest extends TimestampBuilderTestCase {
}
@Override
- public String describeStrategy(Executor executor) {
- return "";
- }
-
- @Override
public String getMnemonic() {
return "InputDiscovering";
}
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeAwareActionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeAwareActionTest.java
index 219b6e283f..636dab3b0d 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeAwareActionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeAwareActionTest.java
@@ -207,11 +207,6 @@ public class SkyframeAwareActionTest extends TimestampBuilderTestCase {
}
@Override
- public String describeStrategy(Executor executor) {
- return null;
- }
-
- @Override
public String getMnemonic() {
return null;
}
@@ -656,11 +651,6 @@ public class SkyframeAwareActionTest extends TimestampBuilderTestCase {
}
@Override
- public String describeStrategy(Executor executor) {
- return null;
- }
-
- @Override
public String getMnemonic() {
return "MockActionMnemonic";
}