Don't expose grouped direct deps of done nodes. Callers are actually interested in the compressed form.
PiperOrigin-RevId: 245827814
diff --git a/src/main/java/com/google/devtools/build/skyframe/InMemoryNodeEntry.java b/src/main/java/com/google/devtools/build/skyframe/InMemoryNodeEntry.java
index 1ead12f..94d6de2 100644
--- a/src/main/java/com/google/devtools/build/skyframe/InMemoryNodeEntry.java
+++ b/src/main/java/com/google/devtools/build/skyframe/InMemoryNodeEntry.java
@@ -211,17 +211,14 @@
@Override
public synchronized Iterable<SkyKey> getDirectDeps() {
- return getGroupedDirectDeps().getAllElementsAsIterable();
+ return GroupedList.compressedToIterable(getCompressedDirectDepsForDoneEntry());
}
- /**
- * If {@code isDone()}, returns the ordered list of sets of grouped direct dependencies that were
- * added in {@link #addTemporaryDirectDeps}.
- */
- public synchronized GroupedList<SkyKey> getGroupedDirectDeps() {
+ /** Returns the compressed {@link GroupedList} of direct deps. Can only be called when done. */
+ public synchronized @GroupedList.Compressed Object getCompressedDirectDepsForDoneEntry() {
assertKeepDeps();
Preconditions.checkState(isDone(), "no deps until done. NodeEntry: %s", this);
- return GroupedList.create(directDeps);
+ return Preconditions.checkNotNull(directDeps, "deps can't be null: %s", this);
}
public int getNumDirectDeps() {