aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar nharmata <nharmata@google.com>2017-05-10 16:00:07 -0400
committerGravatar Kristina Chodorow <kchodorow@google.com>2017-05-11 10:49:18 -0400
commitccc60e05a8315419c93d412b925e0a2a0e5ce807 (patch)
tree4a38eeac3bfeb400d0a0d9d94c8d3b3074700552
parent6fb61a9972f122e779b9b1489e9ce192337151ca (diff)
Add a EvaluationProgressReceiver#computing method.
RELNOTES: None PiperOrigin-RevId: 155665128
-rw-r--r--src/main/java/com/google/devtools/build/skyframe/CompoundEvaluationProgressReceiver.java7
-rw-r--r--src/main/java/com/google/devtools/build/skyframe/DirtyTrackingProgressReceiver.java7
-rw-r--r--src/main/java/com/google/devtools/build/skyframe/EvaluationProgressReceiver.java12
-rw-r--r--src/main/java/com/google/devtools/build/skyframe/ParallelEvaluator.java1
4 files changed, 27 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/skyframe/CompoundEvaluationProgressReceiver.java b/src/main/java/com/google/devtools/build/skyframe/CompoundEvaluationProgressReceiver.java
index 32bdf4f0a3..21f50cf6a3 100644
--- a/src/main/java/com/google/devtools/build/skyframe/CompoundEvaluationProgressReceiver.java
+++ b/src/main/java/com/google/devtools/build/skyframe/CompoundEvaluationProgressReceiver.java
@@ -47,6 +47,13 @@ public class CompoundEvaluationProgressReceiver implements EvaluationProgressRec
}
@Override
+ public void computing(SkyKey skyKey) {
+ for (EvaluationProgressReceiver receiver : receivers) {
+ receiver.computing(skyKey);
+ }
+ }
+
+ @Override
public void computed(SkyKey skyKey, long elapsedTimeNanos) {
for (EvaluationProgressReceiver receiver : receivers) {
receiver.computed(skyKey, elapsedTimeNanos);
diff --git a/src/main/java/com/google/devtools/build/skyframe/DirtyTrackingProgressReceiver.java b/src/main/java/com/google/devtools/build/skyframe/DirtyTrackingProgressReceiver.java
index a4899d62fb..f954a8ca54 100644
--- a/src/main/java/com/google/devtools/build/skyframe/DirtyTrackingProgressReceiver.java
+++ b/src/main/java/com/google/devtools/build/skyframe/DirtyTrackingProgressReceiver.java
@@ -92,6 +92,13 @@ public class DirtyTrackingProgressReceiver implements EvaluationProgressReceiver
}
@Override
+ public void computing(SkyKey skyKey) {
+ if (progressReceiver != null) {
+ progressReceiver.computing(skyKey);
+ }
+ }
+
+ @Override
public void computed(SkyKey skyKey, long elapsedTimeNanos) {
if (progressReceiver != null) {
progressReceiver.computed(skyKey, elapsedTimeNanos);
diff --git a/src/main/java/com/google/devtools/build/skyframe/EvaluationProgressReceiver.java b/src/main/java/com/google/devtools/build/skyframe/EvaluationProgressReceiver.java
index 266abd288d..8787c3e60f 100644
--- a/src/main/java/com/google/devtools/build/skyframe/EvaluationProgressReceiver.java
+++ b/src/main/java/com/google/devtools/build/skyframe/EvaluationProgressReceiver.java
@@ -59,6 +59,14 @@ public interface EvaluationProgressReceiver {
void enqueueing(SkyKey skyKey);
/**
+ * Notifies that {@code skyFunction.compute(skyKey, ...)} is about to be called, for some
+ * appropriate {@link SkyFunction} {@code skyFunction}.
+ *
+ * <p>Notably, this includes {@link SkyFunction#compute} calls due to Skyframe restarts.
+ */
+ void computing(SkyKey skyKey);
+
+ /**
* Notifies that {@code skyFunction.compute(skyKey, ...)} has just been called, for some
* appropriate {@link SkyFunction} {@code skyFunction}.
*
@@ -87,6 +95,10 @@ public interface EvaluationProgressReceiver {
}
@Override
+ public void computing(SkyKey skyKey) {
+ }
+
+ @Override
public void computed(SkyKey skyKey, long elapsedTimeNanos) {
}
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 299df96eab..9e3316e49d 100644
--- a/src/main/java/com/google/devtools/build/skyframe/ParallelEvaluator.java
+++ b/src/main/java/com/google/devtools/build/skyframe/ParallelEvaluator.java
@@ -395,6 +395,7 @@ public final class ParallelEvaluator implements Evaluator {
long startTime = BlazeClock.instance().nanoTime();
try {
try {
+ evaluatorContext.getProgressReceiver().computing(skyKey);
value = factory.compute(skyKey, env);
} finally {
long elapsedTimeNanos = BlazeClock.instance().nanoTime() - startTime;