Drop loading-phase values if --discard_analysis_cache is true and we're not keeping incremental state.
PiperOrigin-RevId: 151639711
diff --git a/src/main/java/com/google/devtools/build/skyframe/InMemoryGraph.java b/src/main/java/com/google/devtools/build/skyframe/InMemoryGraph.java
index edb80f0..82ddb17 100644
--- a/src/main/java/com/google/devtools/build/skyframe/InMemoryGraph.java
+++ b/src/main/java/com/google/devtools/build/skyframe/InMemoryGraph.java
@@ -44,4 +44,6 @@
// Only for use by MemoizingEvaluator#delete
Map<SkyKey, ? extends NodeEntry> getAllValues();
+
+ Map<SkyKey, ? extends NodeEntry> getAllValuesMutable();
}
diff --git a/src/main/java/com/google/devtools/build/skyframe/InMemoryGraphImpl.java b/src/main/java/com/google/devtools/build/skyframe/InMemoryGraphImpl.java
index 71c3ad3..d85ab00 100644
--- a/src/main/java/com/google/devtools/build/skyframe/InMemoryGraphImpl.java
+++ b/src/main/java/com/google/devtools/build/skyframe/InMemoryGraphImpl.java
@@ -120,6 +120,11 @@
return Collections.unmodifiableMap(nodeMap);
}
+ @Override
+ public Map<SkyKey, ? extends NodeEntry> getAllValuesMutable() {
+ return nodeMap;
+ }
+
@VisibleForTesting
protected ConcurrentMap<SkyKey, ? extends NodeEntry> getNodeMap() {
return nodeMap;
diff --git a/src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java b/src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java
index 68998b3..4ebde56 100644
--- a/src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java
+++ b/src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java
@@ -258,6 +258,11 @@
}
@Override
+ public Map<SkyKey, ? extends NodeEntry> getGraphMap() {
+ return graph.getAllValuesMutable();
+ }
+
+ @Override
public Map<SkyKey, SkyValue> getDoneValues() {
return graph.getDoneValues();
}
diff --git a/src/main/java/com/google/devtools/build/skyframe/MemoizingEvaluator.java b/src/main/java/com/google/devtools/build/skyframe/MemoizingEvaluator.java
index d690c4a..6bd01b5 100644
--- a/src/main/java/com/google/devtools/build/skyframe/MemoizingEvaluator.java
+++ b/src/main/java/com/google/devtools/build/skyframe/MemoizingEvaluator.java
@@ -91,6 +91,13 @@
Map<SkyKey, SkyValue> getValues();
/**
+ * Returns the node entries in the graph. Should only be called between evaluations. The returned
+ * map is mutable, but do not mutate it unless you know what you are doing! Naively deleting an
+ * entry will break graph invariants and cause a crash.
+ */
+ Map<SkyKey, ? extends NodeEntry> getGraphMap();
+
+ /**
* Returns the done (without error) values in the graph.
*
* <p>The returned map may be a live view of the graph.