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
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ActionDataTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/ActionDataTest.java
index 763d1fa..342784c 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/ActionDataTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/ActionDataTest.java
@@ -93,13 +93,15 @@
Executor executor = new DummyExecutor(scratch.dir("/"));
amnesiacBuilder()
.buildArtifacts(
- reporter, outputs, null, null, null, null, executor, null, /*explain=*/ false, null);
+ reporter, outputs, null, null, null, null, executor, null, /*explain=*/ false, null,
+ null);
assertSame(executor, action.executor);
executor = new DummyExecutor(scratch.dir("/"));
amnesiacBuilder()
.buildArtifacts(
- reporter, outputs, null, null, null, null, executor, null, /*explain=*/ false, null);
+ reporter, outputs, null, null, null, null, executor, null, /*explain=*/ false, null,
+ null);
assertSame(executor, action.executor);
}
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeAwareActionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeAwareActionTest.java
index 636dab3..17a273e 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeAwareActionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeAwareActionTest.java
@@ -392,6 +392,7 @@
executor,
null,
false,
+ null,
null);
// Sanity check that our invalidation receiver is working correctly. We'll rely on it again.
@@ -419,6 +420,7 @@
executor,
null,
false,
+ null,
null);
if (expectActionIs.dirtied()) {
@@ -789,6 +791,16 @@
});
builder.buildArtifacts(
- reporter, ImmutableSet.of(genFile2), null, null, null, null, executor, null, false, null);
+ reporter,
+ ImmutableSet.of(genFile2),
+ null,
+ null,
+ null,
+ null,
+ executor,
+ null,
+ false,
+ null,
+ null);
}
}
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java b/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java
index 2c1b7e6..de3984d 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java
@@ -43,6 +43,7 @@
import com.google.devtools.build.lib.actions.util.TestAction;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
+import com.google.devtools.build.lib.analysis.TopLevelArtifactContext;
import com.google.devtools.build.lib.buildtool.SkyframeBuilder;
import com.google.devtools.build.lib.events.Reporter;
import com.google.devtools.build.lib.events.StoredEventHandler;
@@ -219,7 +220,8 @@
Executor executor,
Set<ConfiguredTarget> builtTargets,
boolean explain,
- Range<Long> lastExecutionTimeRange)
+ Range<Long> lastExecutionTimeRange,
+ TopLevelArtifactContext topLevelArtifactContext)
throws BuildFailedException, AbruptExitException, InterruptedException,
TestExecException {
skyframeActionExecutor.prepareForExecution(
@@ -356,6 +358,7 @@
new DummyExecutor(rootDirectory),
builtArtifacts, /*explain=*/
false,
+ null,
null);
} finally {
tsgm.waitForTimestampGranularity(reporter.getOutErr());