diff options
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/com/google/devtools/build/skyframe/AbstractExceptionalParallelEvaluator.java | 8 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/skyframe/SkyFunctionEnvironment.java | 35 |
2 files changed, 20 insertions, 23 deletions
diff --git a/src/main/java/com/google/devtools/build/skyframe/AbstractExceptionalParallelEvaluator.java b/src/main/java/com/google/devtools/build/skyframe/AbstractExceptionalParallelEvaluator.java index 315aa8458c..f8f21f254e 100644 --- a/src/main/java/com/google/devtools/build/skyframe/AbstractExceptionalParallelEvaluator.java +++ b/src/main/java/com/google/devtools/build/skyframe/AbstractExceptionalParallelEvaluator.java @@ -513,8 +513,8 @@ public abstract class AbstractExceptionalParallelEvaluator<E extends Exception> errorKey, ValueWithMetadata.error( ErrorInfo.fromChildErrors(errorKey, ImmutableSet.of(error)), - env.buildEvents(parentEntry, /*expectDoneDeps=*/ false), - env.buildPosts(parentEntry, /*expectDoneDeps=*/ false))); + env.buildAndReportEvents(parentEntry, /*expectDoneDeps=*/ false), + env.buildAndReportPostables(parentEntry, /*expectDoneDeps=*/ false))); continue; } } finally { @@ -526,8 +526,8 @@ public abstract class AbstractExceptionalParallelEvaluator<E extends Exception> errorKey, ValueWithMetadata.error( ErrorInfo.fromChildErrors(errorKey, ImmutableSet.of(error)), - env.buildEvents(parentEntry, /*expectDoneDeps=*/ false), - env.buildPosts(parentEntry, /*expectDoneDeps=*/ false))); + env.buildAndReportEvents(parentEntry, /*expectDoneDeps=*/ false), + env.buildAndReportPostables(parentEntry, /*expectDoneDeps=*/ false))); } // Reset the interrupt bit if there was an interrupt from outside this evaluator interrupt. diff --git a/src/main/java/com/google/devtools/build/skyframe/SkyFunctionEnvironment.java b/src/main/java/com/google/devtools/build/skyframe/SkyFunctionEnvironment.java index b5fb94c751..f879a18efd 100644 --- a/src/main/java/com/google/devtools/build/skyframe/SkyFunctionEnvironment.java +++ b/src/main/java/com/google/devtools/build/skyframe/SkyFunctionEnvironment.java @@ -264,7 +264,7 @@ class SkyFunctionEnvironment extends AbstractSkyFunctionEnvironment { Preconditions.checkState(building, skyKey); } - NestedSet<TaggedEvents> buildEvents(NodeEntry entry, boolean expectDoneDeps) + NestedSet<TaggedEvents> buildAndReportEvents(NodeEntry entry, boolean expectDoneDeps) throws InterruptedException { if (!evaluatorContext.getStoredEventFilter().storeEventsAndPosts()) { return NestedSetBuilder.emptySet(Order.STABLE_ORDER); @@ -277,14 +277,17 @@ class SkyFunctionEnvironment extends AbstractSkyFunctionEnvironment { GroupedList<SkyKey> depKeys = entry.getTemporaryDirectDeps(); Collection<SkyValue> deps = - getDepValuesForDoneNodeFromErrorOrDepsOrGraph(depKeys, expectDoneDeps); + getDepValuesForDoneNodeFromErrorOrDepsOrGraph( + depKeys.getAllElementsAsIterable(), expectDoneDeps, depKeys.numElements()); for (SkyValue value : deps) { eventBuilder.addTransitive(ValueWithMetadata.getEvents(value)); } - return eventBuilder.build(); + NestedSet<TaggedEvents> result = eventBuilder.build(); + evaluatorContext.getReplayingNestedSetEventVisitor().visit(result); + return result; } - NestedSet<Postable> buildPosts(NodeEntry entry, boolean expectDoneDeps) + NestedSet<Postable> buildAndReportPostables(NodeEntry entry, boolean expectDoneDeps) throws InterruptedException { if (!evaluatorContext.getStoredEventFilter().storeEventsAndPosts()) { return NestedSetBuilder.emptySet(Order.STABLE_ORDER); @@ -294,11 +297,14 @@ class SkyFunctionEnvironment extends AbstractSkyFunctionEnvironment { GroupedList<SkyKey> depKeys = entry.getTemporaryDirectDeps(); Collection<SkyValue> deps = - getDepValuesForDoneNodeFromErrorOrDepsOrGraph(depKeys, expectDoneDeps); + getDepValuesForDoneNodeFromErrorOrDepsOrGraph( + depKeys.getAllElementsAsIterable(), expectDoneDeps, depKeys.numElements()); for (SkyValue value : deps) { postBuilder.addTransitive(ValueWithMetadata.getPosts(value)); } - return postBuilder.build(); + NestedSet<Postable> result = postBuilder.build(); + evaluatorContext.getReplayingNestedSetPostableVisitor().visit(result); + return result; } void setValue(SkyValue newValue) { @@ -415,8 +421,7 @@ class SkyFunctionEnvironment extends AbstractSkyFunctionEnvironment { * <p>If {@code assertDone}, this asserts that all deps in {@code depKeys} are done. */ private Collection<SkyValue> getDepValuesForDoneNodeFromErrorOrDepsOrGraph( - GroupedList<SkyKey> depKeys, boolean assertDone) throws InterruptedException { - int keySize = depKeys.numElements(); + Iterable<SkyKey> depKeys, boolean assertDone, int keySize) throws InterruptedException { List<SkyValue> result = new ArrayList<>(keySize); // depKeys may contain keys in newlyRegisteredDeps whose values have not yet been retrieved from // the graph during this environment's lifetime. @@ -424,7 +429,7 @@ class SkyFunctionEnvironment extends AbstractSkyFunctionEnvironment { ArrayList<SkyKey> missingKeys = expectedMissingKeys > 0 ? new ArrayList<>(expectedMissingKeys) : null; - for (SkyKey key : depKeys.getAllElementsAsIterable()) { + for (SkyKey key : depKeys) { SkyValue value = maybeGetValueFromErrorOrDeps(key); if (value == null) { if (key == ErrorTransienceValue.KEY) { @@ -556,12 +561,6 @@ class SkyFunctionEnvironment extends AbstractSkyFunctionEnvironment { if (!previouslyRequestedDepsValues.containsKey(depKey)) { newlyRequestedDeps.add(depKey); - evaluatorContext - .getReplayingNestedSetPostableVisitor() - .visit(ValueWithMetadata.getPosts(depValue)); - evaluatorContext - .getReplayingNestedSetEventVisitor() - .visit(ValueWithMetadata.getEvents(depValue)); } } newlyRequestedDeps.endGroup(); @@ -708,8 +707,8 @@ class SkyFunctionEnvironment extends AbstractSkyFunctionEnvironment { // (2) value == null && enqueueParents happens for values that are found to have errors // during a --keep_going build. - NestedSet<Postable> posts = buildPosts(primaryEntry, /*expectDoneDeps=*/ true); - NestedSet<TaggedEvents> events = buildEvents(primaryEntry, /*expectDoneDeps=*/ true); + NestedSet<Postable> posts = buildAndReportPostables(primaryEntry, /*expectDoneDeps=*/ true); + NestedSet<TaggedEvents> events = buildAndReportEvents(primaryEntry, /*expectDoneDeps=*/ true); SkyValue valueWithMetadata; if (value == null) { @@ -780,8 +779,6 @@ class SkyFunctionEnvironment extends AbstractSkyFunctionEnvironment { evaluatorContext.signalValuesAndEnqueueIfReady( skyKey, reverseDeps, currentVersion, enqueueParents); - evaluatorContext.getReplayingNestedSetPostableVisitor().visit(posts); - evaluatorContext.getReplayingNestedSetEventVisitor().visit(events); return enqueueParents == EnqueueParentBehavior.ENQUEUE ? null : reverseDeps; } |