aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Klaus Aehlig <aehlig@google.com>2016-04-07 11:23:54 +0000
committerGravatar Lukacs Berki <lberki@google.com>2016-04-07 11:52:17 +0000
commit9acfe0c789db3287fdf40013ac1013244c78b00f (patch)
treec31adf0ded94daaca098245cb20241e898dd83cf /src
parentec3dd7c6aa3ec1dee345ce1d1b60acacdb67acad (diff)
SkyframeExecutor: use a LoadingProgressReceiver during loading phase
In this way, information about the progress of the loading phase is collected. -- Change-Id: I80ff0c91e27f0b55780c18c05fbb4fdda93263d3 Reviewed-on: https://bazel-review.googlesource.com/#/c/3268 MOS_MIGRATED_REVID=119255431
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
index 0232429ec4..563646268d 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
@@ -1729,9 +1729,16 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
relativeWorkingDirectory.getPathString(), options.compileOneDependency,
options.buildTestsOnly, determineTests,
TestFilter.forOptions(options, eventHandler, ruleClassNames));
- EvaluationResult<TargetPatternPhaseValue> evalResult =
- buildDriver.evaluate(
- ImmutableList.of(key), keepGoing, /*numThreads=*/10, eventHandler);
+ EvaluationResult<TargetPatternPhaseValue> evalResult;
+ LoadingProgressReceiver loadingProgressReceiver = new LoadingProgressReceiver();
+ progressReceiver.loadingProgressReceiver = loadingProgressReceiver;
+ try {
+ evalResult =
+ buildDriver.evaluate(
+ ImmutableList.of(key), keepGoing, /*numThreads=*/ 10, eventHandler);
+ } finally {
+ progressReceiver.loadingProgressReceiver = null;
+ }
if (evalResult.hasError()) {
ErrorInfo errorInfo = evalResult.getError(key);
if (!Iterables.isEmpty(errorInfo.getCycleInfo())) {
@@ -1780,6 +1787,8 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
protected boolean ignoreInvalidations = false;
/** This receiver is only needed for execution, so it is null otherwise. */
@Nullable EvaluationProgressReceiver executionProgressReceiver = null;
+ /** This receiver is only needed for loading, so it is null otherwise. */
+ @Nullable EvaluationProgressReceiver loadingProgressReceiver = null;
@Override
public void invalidated(SkyKey skyKey, InvalidationState state) {
@@ -1795,6 +1804,9 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
return;
}
skyframeBuildView.getInvalidationReceiver().enqueueing(skyKey);
+ if (loadingProgressReceiver != null) {
+ loadingProgressReceiver.enqueueing(skyKey);
+ }
if (executionProgressReceiver != null) {
executionProgressReceiver.enqueueing(skyKey);
}
@@ -1809,6 +1821,9 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
return;
}
skyframeBuildView.getInvalidationReceiver().evaluated(skyKey, valueSupplier, state);
+ if (loadingProgressReceiver != null) {
+ loadingProgressReceiver.evaluated(skyKey, valueSupplier, state);
+ }
if (executionProgressReceiver != null) {
executionProgressReceiver.evaluated(skyKey, valueSupplier, state);
}