diff options
author | nharmata <nharmata@google.com> | 2017-07-18 21:39:13 +0200 |
---|---|---|
committer | Klaus Aehlig <aehlig@google.com> | 2017-07-19 10:22:08 +0200 |
commit | c4335cfed8ed20a4e064554a895dce5bd0927b3c (patch) | |
tree | 48158b90e6b6f0d296e5918390850aa953695781 /src/main/java | |
parent | 2e647eed66771d549aab53faeb04ddad5719849b (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')
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; } }; } |