aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionFunction.java
diff options
context:
space:
mode:
authorGravatar janakr <janakr@google.com>2018-02-26 15:54:57 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-02-26 15:57:11 -0800
commit0175ce3630f15262172731e00e8413c534ed6a62 (patch)
tree3adaa426206428f314dba5a0a4721f032ec1abc4 /src/main/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionFunction.java
parent8cfc6cd2f1165e52b28a858b849463998c0aa73d (diff)
Fail gracefully on conflicting actions generated by an aspect. These can come from Skylark, so we shouldn't crash. As a safety measure, subclasses of ActionLookupValue are now responsible for detecting action conflicts themselves.
PiperOrigin-RevId: 187095271
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionFunction.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionFunction.java14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionFunction.java
index e3081aaf81..d49d533350 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionFunction.java
@@ -73,14 +73,14 @@ public class ActionTemplateExpansionFunction implements SkyFunction {
return null;
}
Iterable<TreeFileArtifact> inputTreeFileArtifacts = treeArtifactValue.getChildren();
- Iterable<Action> expandedActions;
+ GeneratingActions generatingActions;
try {
// Expand the action template using the list of expanded input TreeFileArtifacts.
- expandedActions = ImmutableList.<Action>copyOf(
- actionTemplate.generateActionForInputArtifacts(inputTreeFileArtifacts, key));
// TODO(rduan): Add a check to verify the inputs of expanded actions are subsets of inputs
// of the ActionTemplate.
- checkActionAndArtifactConflicts(expandedActions);
+ generatingActions =
+ checkActionAndArtifactConflicts(
+ actionTemplate.generateActionForInputArtifacts(inputTreeFileArtifacts, key));
} catch (ActionConflictException e) {
e.reportTo(env.getListener());
throw new ActionTemplateExpansionFunctionException(e);
@@ -92,8 +92,7 @@ public class ActionTemplateExpansionFunction implements SkyFunction {
throw new ActionTemplateExpansionFunctionException(e);
}
- return new ActionTemplateExpansionValue(
- actionKeyContext, expandedActions, removeActionsAfterEvaluation.get());
+ return new ActionTemplateExpansionValue(generatingActions, removeActionsAfterEvaluation.get());
}
/** Exception thrown by {@link ActionTemplateExpansionFunction}. */
@@ -111,7 +110,7 @@ public class ActionTemplateExpansionFunction implements SkyFunction {
}
}
- private void checkActionAndArtifactConflicts(Iterable<Action> actions)
+ private GeneratingActions checkActionAndArtifactConflicts(Iterable<? extends Action> actions)
throws ActionConflictException, ArtifactPrefixConflictException {
GeneratingActions generatingActions =
Actions.findAndThrowActionConflict(actionKeyContext, ImmutableList.copyOf(actions));
@@ -123,6 +122,7 @@ public class ActionTemplateExpansionFunction implements SkyFunction {
if (!artifactPrefixConflictMap.isEmpty()) {
throw artifactPrefixConflictMap.values().iterator().next();
}
+ return generatingActions;
}
@Nullable