aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/skyframe
diff options
context:
space:
mode:
authorGravatar felly <felly@google.com>2018-03-27 12:41:13 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-27 12:44:34 -0700
commit44eb96413bc99291854c51a04b18397a400ccd90 (patch)
treeeb28525ba60372fe976a616a00a1de21e03796e5 /src/main/java/com/google/devtools/build/skyframe
parentc9dcf83ccdeced9a68ab1d5719e51c51e9881fd2 (diff)
Fix accidental eager expansion of grouped list in in-memory nodes.
PiperOrigin-RevId: 190656902
Diffstat (limited to 'src/main/java/com/google/devtools/build/skyframe')
-rw-r--r--src/main/java/com/google/devtools/build/skyframe/InMemoryNodeEntry.java8
1 files changed, 6 insertions, 2 deletions
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 24dfeab6b4..7b48275cbe 100644
--- a/src/main/java/com/google/devtools/build/skyframe/InMemoryNodeEntry.java
+++ b/src/main/java/com/google/devtools/build/skyframe/InMemoryNodeEntry.java
@@ -491,7 +491,7 @@ public class InMemoryNodeEntry implements NodeEntry {
@Override
public synchronized void forceRebuild() {
- Preconditions.checkState(getTemporaryDirectDeps().numElements() == signaledDeps, this);
+ Preconditions.checkState(getNumTemporaryDirectDeps() == signaledDeps, this);
getDirtyBuildingState().forceChanged();
}
@@ -560,6 +560,10 @@ public class InMemoryNodeEntry implements NodeEntry {
return (GroupedList<SkyKey>) directDeps;
}
+ private synchronized int getNumTemporaryDirectDeps() {
+ return directDeps == null ? 0 : getTemporaryDirectDeps().numElements();
+ }
+
@Override
public synchronized boolean noDepsLastBuild() {
return getDirtyBuildingState().noDepsLastBuild();
@@ -592,7 +596,7 @@ public class InMemoryNodeEntry implements NodeEntry {
@Override
public synchronized boolean isReady() {
Preconditions.checkState(!isDone(), "can't be ready if done: %s", this);
- return isReady(getTemporaryDirectDeps().numElements());
+ return isReady(getNumTemporaryDirectDeps());
}
/** Returns whether all known children of this node have signaled that they are done. */