diff options
author | mjhalupka <mjhalupka@google.com> | 2018-02-13 13:00:52 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-02-13 13:02:45 -0800 |
commit | 14dbe1392a085bf8a8b9528c5caab55de47325d1 (patch) | |
tree | ddf4ab608062877a8a81705f4ad6972815a72dca /src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java | |
parent | 1b78769afd36b979a1e29116f5878551bdd29ddd (diff) |
Get rid of the last reference to getAttributeMapper by keeping packages which
are referenced by TopLevelTargets when we discard the analysis cache.
PiperOrigin-RevId: 185574670
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java index 20b05f0d46..3f271b30c8 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java @@ -18,6 +18,7 @@ import com.google.common.base.Joiner; import com.google.common.base.Objects; import com.google.common.base.Preconditions; import com.google.common.base.Predicate; +import com.google.common.collect.Collections2; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; @@ -645,6 +646,15 @@ public final class SequencedSkyframeExecutor extends SkyframeExecutor { Collection<ConfiguredTarget> topLevelTargets, Collection<AspectValue> topLevelAspects) { topLevelTargets = ImmutableSet.copyOf(topLevelTargets); topLevelAspects = ImmutableSet.copyOf(topLevelAspects); + // This is to prevent throwing away Packages we may need during execution. + ImmutableSet.Builder<PackageIdentifier> packageSetBuilder = ImmutableSet.builder(); + packageSetBuilder.addAll( + Collections2.transform( + topLevelTargets, (target) -> target.getLabel().getPackageIdentifier())); + packageSetBuilder.addAll( + Collections2.transform( + topLevelAspects, (aspect) -> aspect.getLabel().getPackageIdentifier())); + ImmutableSet<PackageIdentifier> topLevelPackages = packageSetBuilder.build(); try (AutoProfiler p = AutoProfiler.logged("discarding analysis cache", logger)) { lastAnalysisDiscarded = true; Iterator<? extends Map.Entry<SkyKey, ? extends NodeEntry>> it = @@ -657,6 +667,11 @@ public final class SequencedSkyframeExecutor extends SkyframeExecutor { } SkyKey key = keyAndEntry.getKey(); SkyFunctionName functionName = key.functionName(); + // Keep packages for top-level targets and aspects in memory to get the target from later. + if (functionName.equals(SkyFunctions.PACKAGE) + && topLevelPackages.contains((key.argument()))) { + continue; + } if (!tracksStateForIncrementality() && LOADING_TYPES.contains(functionName)) { it.remove(); continue; |