aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/skyframe/ParallelEvaluator.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/skyframe/ParallelEvaluator.java')
-rw-r--r--src/main/java/com/google/devtools/build/skyframe/ParallelEvaluator.java33
1 files changed, 21 insertions, 12 deletions
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 4908fd629d..3c64b616e0 100644
--- a/src/main/java/com/google/devtools/build/skyframe/ParallelEvaluator.java
+++ b/src/main/java/com/google/devtools/build/skyframe/ParallelEvaluator.java
@@ -15,6 +15,7 @@ package com.google.devtools.build.skyframe;
import static com.google.devtools.build.skyframe.SkyKeyInterner.SKY_KEY_INTERNER;
+import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
@@ -610,25 +611,28 @@ public final class ParallelEvaluator implements Evaluator {
}
};
- private class ValueVisitor extends AbstractQueueVisitor {
+ private class ValueVisitor {
+
+ private final AbstractQueueVisitor abstractQueueVisitor;
private AtomicBoolean preventNewEvaluations = new AtomicBoolean(false);
private final Set<SkyKey> inflightNodes = Sets.newConcurrentHashSet();
private final Set<RuntimeException> crashes = Sets.newConcurrentHashSet();
private ValueVisitor(int threadCount) {
- super(
- /*concurrent*/ true,
- threadCount,
- 1,
- TimeUnit.SECONDS,
- /*failFastOnException*/ true,
- /*failFastOnInterrupt*/ true,
- "skyframe-evaluator",
- VALUE_VISITOR_ERROR_CLASSIFIER);
+ abstractQueueVisitor =
+ new AbstractQueueVisitor(
+ /*concurrent*/ true,
+ threadCount,
+ 1,
+ TimeUnit.SECONDS,
+ /*failFastOnException*/ true,
+ /*failFastOnInterrupt*/ true,
+ "skyframe-evaluator",
+ VALUE_VISITOR_ERROR_CLASSIFIER);
}
protected void waitForCompletion() throws InterruptedException {
- awaitQuiescence(/*interruptWorkers=*/ true);
+ abstractQueueVisitor.awaitQuiescence(/*interruptWorkers=*/ true);
}
public void enqueueEvaluation(final SkyKey key) {
@@ -649,7 +653,7 @@ public final class ParallelEvaluator implements Evaluator {
if (newlyEnqueued && progressReceiver != null) {
progressReceiver.enqueueing(key);
}
- execute(new Evaluate(this, key));
+ abstractQueueVisitor.execute(new Evaluate(this, key));
}
/**
@@ -677,6 +681,11 @@ public final class ParallelEvaluator implements Evaluator {
private boolean isInflight(SkyKey key) {
return inflightNodes.contains(key);
}
+
+ @VisibleForTesting
+ public CountDownLatch getExceptionLatchForTestingOnly() {
+ return abstractQueueVisitor.getExceptionLatchForTestingOnly();
+ }
}
/**