Split ActionMetadata into ActionAnalysisMetadata and ActionExecutionMetadata.
Except in action execution logic (ActionExecutionFunction, SkyframeActionExecutor, etc.), switch Action interface references to either ActionAnalysisMetadata if possible or ActionExecutionMetadata.
--
MOS_MIGRATED_REVID=120723431
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ArtifactFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ArtifactFunction.java
index 312feef..c8022d5 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ArtifactFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ArtifactFunction.java
@@ -16,7 +16,8 @@
import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.actions.Action;
-import com.google.devtools.build.lib.actions.Action.MiddlemanType;
+import com.google.devtools.build.lib.actions.ActionAnalysisMetadata;
+import com.google.devtools.build.lib.actions.ActionAnalysisMetadata.MiddlemanType;
import com.google.devtools.build.lib.actions.ActionExecutionException;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.ArtifactOwner;
@@ -65,11 +66,16 @@
}
}
- Action action = extractActionFromArtifact(artifact, env);
- if (action == null) {
+ ActionAnalysisMetadata actionMetadata = extractActionFromArtifact(artifact, env);
+ if (actionMetadata == null) {
return null;
}
+ Preconditions.checkState(
+ actionMetadata instanceof Action,
+ "%s is not a proper Action object and therefore cannot be executed",
+ actionMetadata);
+ Action action = (Action) actionMetadata;
ActionExecutionValue actionValue =
(ActionExecutionValue) env.getValue(ActionExecutionValue.key(action));
if (actionValue == null) {
@@ -165,8 +171,8 @@
return FileArtifactValue.create(artifact, data);
}
- private AggregatingArtifactValue createAggregatingValue(Artifact artifact, Action action,
- FileArtifactValue value, SkyFunction.Environment env) {
+ private AggregatingArtifactValue createAggregatingValue(Artifact artifact,
+ ActionAnalysisMetadata action, FileArtifactValue value, SkyFunction.Environment env) {
// This artifact aggregates other artifacts. Keep track of them so callers can find them.
ImmutableList.Builder<Pair<Artifact, FileArtifactValue>> inputs = ImmutableList.builder();
for (Map.Entry<SkyKey, SkyValue> entry :
@@ -190,7 +196,7 @@
* see if the action is an aggregating middleman action. However, may include runfiles middleman
* actions and Fileset artifacts in the future.
*/
- private static boolean isAggregatingValue(Action action) {
+ private static boolean isAggregatingValue(ActionAnalysisMetadata action) {
return action.getActionType() == MiddlemanType.AGGREGATING_MIDDLEMAN;
}
@@ -199,7 +205,8 @@
return Label.print(((OwnedArtifact) skyKey.argument()).getArtifact().getOwner());
}
- private Action extractActionFromArtifact(Artifact artifact, SkyFunction.Environment env) {
+ private ActionAnalysisMetadata extractActionFromArtifact(
+ Artifact artifact, SkyFunction.Environment env) {
ArtifactOwner artifactOwner = artifact.getArtifactOwner();
Preconditions.checkState(artifactOwner instanceof ActionLookupKey, "", artifact, artifactOwner);