Skip fetching for rdep removal if the graph does not store rdeps.
RELNOTES: None.
PiperOrigin-RevId: 226927080
diff --git a/src/main/java/com/google/devtools/build/skyframe/QueryableGraph.java b/src/main/java/com/google/devtools/build/skyframe/QueryableGraph.java
index fb37fce..0605f22 100644
--- a/src/main/java/com/google/devtools/build/skyframe/QueryableGraph.java
+++ b/src/main/java/com/google/devtools/build/skyframe/QueryableGraph.java
@@ -80,6 +80,11 @@
Iterables.filter(request.oldDeps, Predicates.not(Predicates.in(request.excludedKeys))));
}
+ /** Checks whether this graph stores reverse dependencies. */
+ default boolean storesReverseDeps() {
+ return true;
+ }
+
/**
* The reason that a node is being looked up in the Skyframe graph.
*
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 9942b9f..9c45ef6 100644
--- a/src/main/java/com/google/devtools/build/skyframe/SkyFunctionEnvironment.java
+++ b/src/main/java/com/google/devtools/build/skyframe/SkyFunctionEnvironment.java
@@ -716,7 +716,7 @@
value, errorInfo, eventsAndPostables.first, eventsAndPostables.second);
}
GroupedList<SkyKey> temporaryDirectDeps = primaryEntry.getTemporaryDirectDeps();
- if (!oldDeps.isEmpty()) {
+ if (evaluatorContext.getGraph().storesReverseDeps() && !oldDeps.isEmpty()) {
// Remove the rdep on this entry for each of its old deps that is no longer a direct dep.
Set<SkyKey> depsToRemove = Sets.difference(oldDeps, temporaryDirectDeps.toSet());
Collection<? extends NodeEntry> oldDepEntries =