aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java')
-rw-r--r--src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java70
1 files changed, 49 insertions, 21 deletions
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 38604ed50d..972d020e3b 100644
--- a/src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java
+++ b/src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java
@@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean;
-
import javax.annotation.Nullable;
/**
@@ -112,13 +111,16 @@ public final class InMemoryMemoizingEvaluator implements MemoizingEvaluator {
@Override
public void delete(final Predicate<SkyKey> deletePredicate) {
valuesToDelete.addAll(
- Maps.filterEntries(graph.getAllValues(), new Predicate<Entry<SkyKey, NodeEntry>>() {
- @Override
- public boolean apply(Entry<SkyKey, NodeEntry> input) {
- Preconditions.checkNotNull(input.getKey(), "Null SkyKey in entry: %s", input);
- return input.getValue().isDirty() || deletePredicate.apply(input.getKey());
- }
- }).keySet());
+ Maps.filterEntries(
+ graph.getAllValues(),
+ new Predicate<Entry<SkyKey, ? extends NodeEntry>>() {
+ @Override
+ public boolean apply(Entry<SkyKey, ? extends NodeEntry> input) {
+ Preconditions.checkNotNull(input.getKey(), "Null SkyKey in entry: %s", input);
+ return input.getValue().isDirty() || deletePredicate.apply(input.getKey());
+ }
+ })
+ .keySet());
}
@Override
@@ -209,12 +211,18 @@ public final class InMemoryMemoizingEvaluator implements MemoizingEvaluator {
SkyValue newValue = entry.getValue();
NodeEntry prevEntry = graph.get(null, Reason.OTHER, key);
if (prevEntry != null && prevEntry.isDone()) {
- Iterable<SkyKey> directDeps = prevEntry.getDirectDeps();
- Preconditions.checkState(Iterables.isEmpty(directDeps),
- "existing entry for %s has deps: %s", key, directDeps);
- if (newValue.equals(prevEntry.getValue())
- && !valuesToDirty.contains(key) && !valuesToDelete.contains(key)) {
- it.remove();
+ try {
+ Iterable<SkyKey> directDeps = prevEntry.getDirectDeps();
+ Preconditions.checkState(
+ Iterables.isEmpty(directDeps), "existing entry for %s has deps: %s", key, directDeps);
+ if (newValue.equals(prevEntry.getValue())
+ && !valuesToDirty.contains(key)
+ && !valuesToDelete.contains(key)) {
+ it.remove();
+ }
+ } catch (InterruptedException e) {
+ throw new IllegalStateException(
+ "InMemoryGraph does not throw: " + entry + ", " + prevEntry, e);
}
}
}
@@ -227,7 +235,11 @@ public final class InMemoryMemoizingEvaluator implements MemoizingEvaluator {
if (valuesToInject.isEmpty()) {
return;
}
- ParallelEvaluator.injectValues(valuesToInject, version, graph, dirtyKeyTracker);
+ try {
+ ParallelEvaluator.injectValues(valuesToInject, version, graph, dirtyKeyTracker);
+ } catch (InterruptedException e) {
+ throw new IllegalStateException("InMemoryGraph doesn't throw interrupts", e);
+ }
// Start with a new map to avoid bloat since clear() does not downsize the map.
valuesToInject = new HashMap<>();
}
@@ -268,13 +280,21 @@ public final class InMemoryMemoizingEvaluator implements MemoizingEvaluator {
@Override
@Nullable public SkyValue getExistingValueForTesting(SkyKey key) {
NodeEntry entry = getExistingEntryForTesting(key);
- return isDone(entry) ? entry.getValue() : null;
+ try {
+ return isDone(entry) ? entry.getValue() : null;
+ } catch (InterruptedException e) {
+ throw new IllegalStateException("InMemoryGraph does not throw" + key + ", " + entry, e);
+ }
}
@Override
@Nullable public ErrorInfo getExistingErrorForTesting(SkyKey key) {
NodeEntry entry = getExistingEntryForTesting(key);
- return isDone(entry) ? entry.getErrorInfo() : null;
+ try {
+ return isDone(entry) ? entry.getErrorInfo() : null;
+ } catch (InterruptedException e) {
+ throw new IllegalStateException("InMemoryGraph does not throw" + key + ", " + entry, e);
+ }
}
@Nullable
@@ -300,7 +320,11 @@ public final class InMemoryMemoizingEvaluator implements MemoizingEvaluator {
for (NodeEntry entry : graph.getAllValues().values()) {
nodes++;
if (entry.isDone()) {
- edges += Iterables.size(entry.getDirectDeps());
+ try {
+ edges += Iterables.size(entry.getDirectDeps());
+ } catch (InterruptedException e) {
+ throw new IllegalStateException("InMemoryGraph doesn't throw: " + entry, e);
+ }
}
}
out.println("Node count: " + nodes);
@@ -315,14 +339,18 @@ public final class InMemoryMemoizingEvaluator implements MemoizingEvaluator {
}
};
- for (Entry<SkyKey, NodeEntry> mapPair : graph.getAllValues().entrySet()) {
+ for (Entry<SkyKey, ? extends NodeEntry> mapPair : graph.getAllValues().entrySet()) {
SkyKey key = mapPair.getKey();
NodeEntry entry = mapPair.getValue();
if (entry.isDone()) {
out.print(keyFormatter.apply(key));
out.print("|");
- out.println(Joiner.on('|').join(
- Iterables.transform(entry.getDirectDeps(), keyFormatter)));
+ try {
+ out.println(
+ Joiner.on('|').join(Iterables.transform(entry.getDirectDeps(), keyFormatter)));
+ } catch (InterruptedException e) {
+ throw new IllegalStateException("InMemoryGraph doesn't throw: " + entry, e);
+ }
}
}
}