diff options
author | 2015-08-18 21:09:54 +0000 | |
---|---|---|
committer | 2015-08-20 14:46:24 +0000 | |
commit | 85fe06126bcc36c4cbb6008e931c2454d0f5e694 (patch) | |
tree | 421d11bb8f0e21700f353dbfea7a03732c514d69 /src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalFunction.java | |
parent | a2e2cc2d2f05594f140a31543e70e720b3dfeb83 (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.java | 37 |
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, |