aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalFunction.java
diff options
context:
space:
mode:
authorGravatar Eric Fellheimer <felly@google.com>2015-08-18 21:09:54 +0000
committerGravatar Lukacs Berki <lberki@google.com>2015-08-20 14:46:24 +0000
commit85fe06126bcc36c4cbb6008e931c2454d0f5e694 (patch)
tree421d11bb8f0e21700f353dbfea7a03732c514d69 /src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalFunction.java
parenta2e2cc2d2f05594f140a31543e70e720b3dfeb83 (diff)
Avoid Skyframe restarts in transitive targets due related to conservative aspect deps.
-- MOS_MIGRATED_REVID=100960261
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalFunction.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalFunction.java37
1 files changed, 21 insertions, 16 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalFunction.java
index 1be5863bca..7f54357e8e 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalFunction.java
@@ -86,26 +86,31 @@ public class TransitiveTraversalFunction extends TransitiveBaseTraversalFunction
: TransitiveTraversalValue.unsuccessfulTransitiveTraversal(errorLoadingTarget);
}
- @Override
- protected Iterable<SkyKey> getLabelAspectKeys(Target target, Environment env) {
- if (!(target instanceof Rule)) {
- return ImmutableSet.of();
+ @Override
+ protected Iterable<SkyKey> getStrictLabelAspectKeys(Target target, Environment env) {
+ return ImmutableSet.of();
}
- Rule rule = (Rule) target;
- Multimap<Attribute, Label> attibuteMap = LinkedHashMultimap.create();
- for (Attribute attribute : rule.getTransitions(Rule.NO_NODEP_ATTRIBUTES).keys()) {
- for (Class<? extends AspectFactory<?, ?, ?>> aspectFactory : attribute.getAspects()) {
- AspectDefinition.addAllAttributesOfAspect(rule, attibuteMap,
- AspectFactory.Util.create(aspectFactory).getDefinition(), Rule.ALL_DEPS);
+
+ @Override
+ protected Iterable<SkyKey> getConservativeLabelAspectKeys(Target target) {
+ if (!(target instanceof Rule)) {
+ return ImmutableSet.of();
+ }
+ Rule rule = (Rule) target;
+ Multimap<Attribute, Label> attibuteMap = LinkedHashMultimap.create();
+ for (Attribute attribute : rule.getTransitions(Rule.NO_NODEP_ATTRIBUTES).keys()) {
+ for (Class<? extends AspectFactory<?, ?, ?>> aspectFactory : attribute.getAspects()) {
+ AspectDefinition.addAllAttributesOfAspect(rule, attibuteMap,
+ AspectFactory.Util.create(aspectFactory).getDefinition(), Rule.ALL_DEPS);
+ }
}
- }
- ImmutableSet.Builder<SkyKey> depKeys = new ImmutableSet.Builder<>();
- for (Label label : attibuteMap.values()) {
- depKeys.add(getKey(label));
+ ImmutableSet.Builder<SkyKey> depKeys = new ImmutableSet.Builder<>();
+ for (Label label : attibuteMap.values()) {
+ depKeys.add(getKey(label));
+ }
+ return depKeys.build();
}
- return depKeys.build();
- }
/**
* Because {@link TransitiveTraversalFunction} is invoked only when its side-effects are desired,