aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2016-07-15 22:23:37 +0000
committerGravatar Yun Peng <pcloudy@google.com>2016-07-18 10:44:37 +0000
commitbfd4e2461556a67502c80c84c0228b8c91955623 (patch)
tree554c56e1e90f9c6b93bdec7a3b10ec5629c7693f /src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
parenta66a56b108c04f05efcb9b965361d692435acc59 (diff)
Model the TopLevelArtifactContext as an argument to the CompletionFunction rather than a PRECOMPUTED value.
Having a stale TopLevelArtifactContext leads to invalidation of all the top level target nodes, causing time wasted due to a lot of cache hits for a null build. -- MOS_MIGRATED_REVID=127585059
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java18
1 files changed, 7 insertions, 11 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
index 4168ef143f..f9426d1b70 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
@@ -633,13 +633,6 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
PrecomputedValue.DEFAULTS_PACKAGE_CONTENTS.set(injectable(), defaultsPackageContents);
}
- /**
- * Injects the top-level artifact options.
- */
- public void injectTopLevelContext(TopLevelArtifactContext options) {
- PrecomputedValue.TOP_LEVEL_CONTEXT.set(injectable(), options);
- }
-
public void injectWorkspaceStatusData() {
PrecomputedValue.WORKSPACE_STATUS_KEY.set(injectable(),
workspaceStatusActionFactory.createWorkspaceStatusAction(
@@ -1083,7 +1076,8 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
boolean finalizeActionsToOutputService,
int numJobs,
ActionCacheChecker actionCacheChecker,
- @Nullable EvaluationProgressReceiver executionProgressReceiver)
+ @Nullable EvaluationProgressReceiver executionProgressReceiver,
+ TopLevelArtifactContext topLevelArtifactContext)
throws InterruptedException {
checkActive();
Preconditions.checkState(actionLogBufferPathGenerator != null);
@@ -1096,9 +1090,11 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
try {
progressReceiver.executionProgressReceiver = executionProgressReceiver;
Iterable<SkyKey> artifactKeys = ArtifactValue.mandatoryKeys(artifactsToBuild);
- Iterable<SkyKey> targetKeys = TargetCompletionValue.keys(targetsToBuild);
- Iterable<SkyKey> aspectKeys = AspectCompletionValue.keys(aspects);
- Iterable<SkyKey> testKeys = TestCompletionValue.keys(targetsToTest, exclusiveTesting);
+ Iterable<SkyKey> targetKeys =
+ TargetCompletionValue.keys(targetsToBuild, topLevelArtifactContext);
+ Iterable<SkyKey> aspectKeys = AspectCompletionValue.keys(aspects, topLevelArtifactContext);
+ Iterable<SkyKey> testKeys =
+ TestCompletionValue.keys(targetsToTest, topLevelArtifactContext, exclusiveTesting);
return buildDriver.evaluate(
Iterables.concat(artifactKeys, targetKeys, aspectKeys, testKeys),
keepGoing,