diff options
Diffstat (limited to 'src/main/java/com/google/devtools')
-rw-r--r-- | src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java | 20 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/skyframe/ParallelEvaluator.java | 28 |
2 files changed, 31 insertions, 17 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 0c6d54f7f2..324be40ee4 100644 --- a/src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java +++ b/src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java @@ -21,6 +21,7 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; import com.google.common.collect.Maps; import com.google.common.collect.Sets; +import com.google.devtools.build.lib.events.Event; import com.google.devtools.build.lib.events.EventHandler; import com.google.devtools.build.skyframe.Differencer.Diff; import com.google.devtools.build.skyframe.InvalidatingNodeVisitor.DeletingInvalidationState; @@ -157,8 +158,8 @@ public final class InMemoryMemoizingEvaluator implements MemoizingEvaluator { injectValues(intVersion); ParallelEvaluator evaluator = new ParallelEvaluator(graph, intVersion, - skyFunctions, eventHandler, emittedEventState, keepGoing, numThreads, progressReceiver, - dirtyKeyTracker); + skyFunctions, eventHandler, emittedEventState, DEFAULT_STORED_EVENT_FILTER, keepGoing, + numThreads, progressReceiver, dirtyKeyTracker); EvaluationResult<T> result = evaluator.eval(roots); return EvaluationResult.<T>builder() .mergeFrom(result) @@ -309,6 +310,21 @@ public final class InMemoryMemoizingEvaluator implements MemoizingEvaluator { } } + public static final Predicate<Event> DEFAULT_STORED_EVENT_FILTER = new Predicate<Event>() { + @Override + public boolean apply(Event event) { + switch (event.getKind()) { + case INFO: + throw new UnsupportedOperationException("Values should not display INFO messages: " + + event.getLocation() + ": " + event.getMessage()); + case PROGRESS: + return false; + default: + return true; + } + } + }; + public static final EvaluatorSupplier SUPPLIER = new EvaluatorSupplier() { @Override public MemoizingEvaluator create( diff --git a/src/main/java/com/google/devtools/build/skyframe/ParallelEvaluator.java b/src/main/java/com/google/devtools/build/skyframe/ParallelEvaluator.java index 0b0e00be9f..09296b5ca7 100644 --- a/src/main/java/com/google/devtools/build/skyframe/ParallelEvaluator.java +++ b/src/main/java/com/google/devtools/build/skyframe/ParallelEvaluator.java @@ -39,6 +39,7 @@ import com.google.devtools.build.lib.profiler.Profiler; import com.google.devtools.build.lib.profiler.ProfilerTask; import com.google.devtools.build.lib.util.GroupedList.GroupedListHelper; import com.google.devtools.build.skyframe.EvaluationProgressReceiver.EvaluationState; +import com.google.devtools.build.skyframe.MemoizingEvaluator.EmittedEventState; import com.google.devtools.build.skyframe.NodeEntry.DependencyState; import com.google.devtools.build.skyframe.Scheduler.SchedulerException; import com.google.devtools.build.skyframe.SkyFunctionException.ReifiedSkyFunctionException; @@ -113,16 +114,17 @@ public final class ParallelEvaluator implements Evaluator { private final int threadCount; @Nullable private final EvaluationProgressReceiver progressReceiver; private final DirtyKeyTracker dirtyKeyTracker; + private final Predicate<Event> storedEventFilter; private static final Interner<SkyKey> KEY_CANONICALIZER = Interners.newWeakInterner(); public ParallelEvaluator(ProcessableGraph graph, Version graphVersion, - ImmutableMap<? extends SkyFunctionName, ? extends SkyFunction> skyFunctions, - final EventHandler reporter, - MemoizingEvaluator.EmittedEventState emittedEventState, - boolean keepGoing, int threadCount, - @Nullable EvaluationProgressReceiver progressReceiver, - DirtyKeyTracker dirtyKeyTracker) { + ImmutableMap<? extends SkyFunctionName, ? extends SkyFunction> skyFunctions, + final EventHandler reporter, + EmittedEventState emittedEventState, + Predicate<Event> storedEventFilter, boolean keepGoing, int threadCount, + @Nullable EvaluationProgressReceiver progressReceiver, + DirtyKeyTracker dirtyKeyTracker) { this.graph = graph; this.skyFunctions = skyFunctions; this.graphVersion = graphVersion; @@ -133,6 +135,7 @@ public final class ParallelEvaluator implements Evaluator { this.dirtyKeyTracker = Preconditions.checkNotNull(dirtyKeyTracker); this.replayingNestedSetEventVisitor = new NestedSetVisitor<>(new NestedSetEventReceiver(reporter), emittedEventState); + this.storedEventFilter = storedEventFilter; } /** @@ -188,15 +191,10 @@ public final class ParallelEvaluator implements Evaluator { @Override public void handle(Event e) { checkActive(); - switch (e.getKind()) { - case INFO: - throw new UnsupportedOperationException("Values should not display INFO messages: " + - skyKey + " printed " + e.getLocation() + ": " + e.getMessage()); - case PROGRESS: - reporter.handle(e); - break; - default: - super.handle(e); + if (storedEventFilter.apply(e)) { + super.handle(e); + } else { + reporter.handle(e); } } }; |