aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java
diff options
context:
space:
mode:
authorGravatar nharmata <nharmata@google.com>2017-07-18 21:39:13 +0200
committerGravatar Klaus Aehlig <aehlig@google.com>2017-07-19 10:22:08 +0200
commitc4335cfed8ed20a4e064554a895dce5bd0927b3c (patch)
tree48158b90e6b6f0d296e5918390850aa953695781 /src/main/java
parent2e647eed66771d549aab53faeb04ddad5719849b (diff)
Rework LoadingPhaseCompleteEvent & AnalysisPhaseCompleteEvent to account for the fact that loading and analysis is now interleaved.
RELNOTES: None PiperOrigin-RevId: 162388460
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/AnalysisPhaseCompleteEvent.java13
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/BuildView.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseCompleteEvent.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/pkgcache/PackageManager.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/LegacyLoadingPhaseRunner.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframePackageManager.java5
8 files changed, 27 insertions, 8 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisPhaseCompleteEvent.java b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisPhaseCompleteEvent.java
index 35b2d7fa2e..063c5716d0 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisPhaseCompleteEvent.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisPhaseCompleteEvent.java
@@ -14,6 +14,8 @@
package com.google.devtools.build.lib.analysis;
+import static com.google.devtools.build.lib.pkgcache.PackageManager.PackageManagerStatistics;
+
import com.google.common.collect.ImmutableList;
import java.util.Collection;
@@ -26,16 +28,18 @@ public class AnalysisPhaseCompleteEvent {
private final Collection<ConfiguredTarget> topLevelTargets;
private final long timeInMs;
private int targetsVisited;
+ private final PackageManagerStatistics pkgManagerStats;
/**
* Construct the event.
* @param topLevelTargets The set of active topLevelTargets that remain.
*/
public AnalysisPhaseCompleteEvent(Collection<? extends ConfiguredTarget> topLevelTargets,
- int targetsVisited, long timeInMs) {
+ int targetsVisited, long timeInMs, PackageManagerStatistics pkgManagerStats) {
this.timeInMs = timeInMs;
this.topLevelTargets = ImmutableList.copyOf(topLevelTargets);
this.targetsVisited = targetsVisited;
+ this.pkgManagerStats = pkgManagerStats;
}
/**
@@ -56,4 +60,11 @@ public class AnalysisPhaseCompleteEvent {
public long getTimeInMs() {
return timeInMs;
}
+
+ /**
+ * Returns package manager statistics.
+ */
+ public PackageManagerStatistics getPkgManagerStats() {
+ return pkgManagerStats;
+ }
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
index 3ea2321714..5d884515eb 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
@@ -72,6 +72,7 @@ import com.google.devtools.build.lib.packages.RuleTransitionFactory;
import com.google.devtools.build.lib.packages.Target;
import com.google.devtools.build.lib.packages.TargetUtils;
import com.google.devtools.build.lib.pkgcache.LoadingResult;
+import com.google.devtools.build.lib.pkgcache.PackageManager.PackageManagerStatistics;
import com.google.devtools.build.lib.rules.test.CoverageReportActionFactory;
import com.google.devtools.build.lib.rules.test.CoverageReportActionFactory.CoverageReportActionsWrapper;
import com.google.devtools.build.lib.rules.test.InstrumentedFilesProvider;
@@ -285,6 +286,10 @@ public class BuildView {
return skyframeBuildView.getEvaluatedTargetKeys().size();
}
+ public PackageManagerStatistics getAndClearPkgManagerStatistics() {
+ return skyframeExecutor.getPackageManager().getAndClearStatistics();
+ }
+
public BuildView(BlazeDirectories directories,
ConfiguredRuleClassProvider ruleClassProvider,
SkyframeExecutor skyframeExecutor,
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java b/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java
index c825ccfce2..f9bab78bd4 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java
@@ -561,7 +561,8 @@ public final class BuildTool {
// TODO(bazel-team): Merge these into one event.
env.getEventBus().post(new AnalysisPhaseCompleteEvent(analysisResult.getTargetsToBuild(),
- view.getTargetsVisited(), timer.stop().elapsed(TimeUnit.MILLISECONDS)));
+ view.getTargetsVisited(), timer.stop().elapsed(TimeUnit.MILLISECONDS),
+ view.getAndClearPkgManagerStatistics()));
env.getEventBus().post(new TestFilteringCompleteEvent(analysisResult.getTargetsToBuild(),
analysisResult.getTargetsToTest()));
diff --git a/src/main/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseCompleteEvent.java b/src/main/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseCompleteEvent.java
index 4cfc4fa473..e83115b7c3 100644
--- a/src/main/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseCompleteEvent.java
+++ b/src/main/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseCompleteEvent.java
@@ -72,7 +72,7 @@ public final class LoadingPhaseCompleteEvent implements ExtendedEventHandler.Pos
}
/**
- * Returns the PackageCache statistics.
+ * Returns package manager statistics.
*/
public PackageManager.PackageManagerStatistics getPkgManagerStats() {
return pkgManagerStats;
diff --git a/src/main/java/com/google/devtools/build/lib/pkgcache/PackageManager.java b/src/main/java/com/google/devtools/build/lib/pkgcache/PackageManager.java
index e1615cdf56..d38e16e714 100644
--- a/src/main/java/com/google/devtools/build/lib/pkgcache/PackageManager.java
+++ b/src/main/java/com/google/devtools/build/lib/pkgcache/PackageManager.java
@@ -22,7 +22,7 @@ import java.io.PrintStream;
* related functionality: Recursive package finding, loaded package checking, etc.
*/
public interface PackageManager extends PackageProvider, CachingPackageLocator {
- PackageManagerStatistics getStatistics();
+ PackageManagerStatistics getAndClearStatistics();
/**
* Dump the contents of the package manager in human-readable form.
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/LegacyLoadingPhaseRunner.java b/src/main/java/com/google/devtools/build/lib/skyframe/LegacyLoadingPhaseRunner.java
index c6d34b0c09..90b24bd068 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/LegacyLoadingPhaseRunner.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/LegacyLoadingPhaseRunner.java
@@ -217,7 +217,7 @@ public final class LegacyLoadingPhaseRunner extends LoadingPhaseRunner {
new LoadingPhaseCompleteEvent(
patternParsingValue.getTargets(),
patternParsingValue.getTestSuiteTargets(),
- packageManager.getStatistics(),
+ packageManager.getAndClearStatistics(),
testSuiteTime));
LOG.info("Target pattern evaluation finished");
return patternParsingValue.toLoadingResult();
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 463e3f3d5f..e1239e1bc1 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
@@ -103,6 +103,7 @@ import com.google.devtools.build.lib.pkgcache.LoadingPhaseRunner;
import com.google.devtools.build.lib.pkgcache.LoadingResult;
import com.google.devtools.build.lib.pkgcache.PackageCacheOptions;
import com.google.devtools.build.lib.pkgcache.PackageManager;
+import com.google.devtools.build.lib.pkgcache.PackageManager.PackageManagerStatistics;
import com.google.devtools.build.lib.pkgcache.PathPackageLocator;
import com.google.devtools.build.lib.pkgcache.TargetParsingCompleteEvent;
import com.google.devtools.build.lib.pkgcache.TestFilter;
@@ -2096,7 +2097,7 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
}
eventHandler.post(new LoadingPhaseCompleteEvent(
patternParsingValue.getTargets(), patternParsingValue.getTestSuiteTargets(),
- packageManager.getStatistics(), /*timeInMs=*/0));
+ PackageManagerStatistics.ZERO, /*timeInMs=*/0));
return patternParsingValue.toLoadingResult();
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframePackageManager.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframePackageManager.java
index 198538764c..87675c50e4 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframePackageManager.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframePackageManager.java
@@ -79,11 +79,12 @@ class SkyframePackageManager implements PackageManager {
}
@Override
- public PackageManagerStatistics getStatistics() {
+ public PackageManagerStatistics getAndClearStatistics() {
+ int packagesLoaded = numPackagesLoaded.getAndSet(0);
return new PackageManagerStatistics() {
@Override
public int getPackagesLoaded() {
- return numPackagesLoaded.get();
+ return packagesLoaded;
}
};
}