Automated rollback of commit 1acc7a843bf0996c26a1e3d74bb64514395b7e7f.
PiperOrigin-RevId: 526586062
Change-Id: I95d36a97b46d1e6ca7d98efc7643a317f3f0ac59
diff --git a/scripts/bootstrap/compile.sh b/scripts/bootstrap/compile.sh
index 56dcf87..82bb2f9 100755
--- a/scripts/bootstrap/compile.sh
+++ b/scripts/bootstrap/compile.sh
@@ -25,7 +25,7 @@
# Parse third_party/googleapis/BUILD.bazel to find the proto files we need to compile from googleapis
GOOGLE_API_PROTOS="$(grep -o '".*\.proto"' third_party/googleapis/BUILD.bazel | sed 's/"//g' | sed 's|^|third_party/googleapis/|g')"
-PROTO_FILES=$(find third_party/remoteapis ${GOOGLE_API_PROTOS} third_party/pprof src/main/protobuf src/main/java/com/google/devtools/build/lib/buildeventstream/proto src/main/java/com/google/devtools/build/skyframe src/main/java/com/google/devtools/build/lib/skyframe/proto src/main/java/com/google/devtools/build/lib/bazel/debug src/main/java/com/google/devtools/build/lib/starlarkdebug/proto src/main/java/com/google/devtools/build/lib/packages/metrics/package_load_metrics.proto -name "*.proto")
+PROTO_FILES=$(find third_party/remoteapis ${GOOGLE_API_PROTOS} third_party/pprof src/main/protobuf src/main/java/com/google/devtools/build/lib/buildeventstream/proto src/main/java/com/google/devtools/build/skyframe src/main/java/com/google/devtools/build/lib/skyframe/proto src/main/java/com/google/devtools/build/lib/bazel/debug src/main/java/com/google/devtools/build/lib/starlarkdebug/proto src/main/java/com/google/devtools/build/lib/packages/metrics/package_metrics.proto -name "*.proto")
# For protobuf jars, derived/jars/com_google_protobuf/java/core/libcore.jar must be in front of derived/jars/com_google_protobuf/java/core/liblite.jar, so we sort jars here
LIBRARY_JARS=$(find $ADDITIONAL_JARS -name '*.jar' | sort | grep -Fv JavaBuilder | tr "\n" " ")
MAVEN_JARS=$(find maven -name '*.jar' | grep -Fv netty-tcnative | tr "\n" " ")
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/BUILD b/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/BUILD
index d30768b..313dccb 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/BUILD
@@ -26,7 +26,6 @@
name = "build_event_stream_proto",
srcs = ["build_event_stream.proto"],
deps = [
- "//src/main/java/com/google/devtools/build/lib/packages/metrics:package_load_metrics_proto",
"//src/main/protobuf:command_line_proto",
"//src/main/protobuf:failure_details_proto",
"//src/main/protobuf:invocation_policy_proto",
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/build_event_stream.proto b/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/build_event_stream.proto
index 8613d33..18fd701 100644
--- a/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/build_event_stream.proto
+++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/build_event_stream.proto
@@ -18,7 +18,6 @@
import "google/protobuf/duration.proto";
import "google/protobuf/timestamp.proto";
-import "src/main/java/com/google/devtools/build/lib/packages/metrics/package_load_metrics.proto";
import "src/main/protobuf/command_line.proto";
import "src/main/protobuf/failure_details.proto";
import "src/main/protobuf/invocation_policy.proto";
@@ -940,10 +939,6 @@
// After Feb 2022, this value is the number of packages successfully
// loaded.
int64 packages_loaded = 1;
-
- // Loading time metrics per package.
- repeated devtools.build.lib.packages.metrics.PackageLoadMetrics
- package_load_metrics = 2;
}
PackageMetrics package_metrics = 4;
diff --git a/src/main/java/com/google/devtools/build/lib/metrics/BUILD b/src/main/java/com/google/devtools/build/lib/metrics/BUILD
index eaf5f48..fba1ce6 100644
--- a/src/main/java/com/google/devtools/build/lib/metrics/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/metrics/BUILD
@@ -44,8 +44,6 @@
"//src/main/java/com/google/devtools/build/lib/bugreport",
"//src/main/java/com/google/devtools/build/lib/buildeventstream/proto:build_event_stream_java_proto",
"//src/main/java/com/google/devtools/build/lib/clock",
- "//src/main/java/com/google/devtools/build/lib/packages/metrics",
- "//src/main/java/com/google/devtools/build/lib/packages/metrics:package_load_metrics_java_proto",
"//src/main/java/com/google/devtools/build/lib/profiler",
"//src/main/java/com/google/devtools/build/lib/profiler:network_metrics_collector",
"//src/main/java/com/google/devtools/build/lib/skyframe:execution_finished_event",
diff --git a/src/main/java/com/google/devtools/build/lib/metrics/MetricsCollector.java b/src/main/java/com/google/devtools/build/lib/metrics/MetricsCollector.java
index e8d32e7..21a4b72 100644
--- a/src/main/java/com/google/devtools/build/lib/metrics/MetricsCollector.java
+++ b/src/main/java/com/google/devtools/build/lib/metrics/MetricsCollector.java
@@ -44,9 +44,6 @@
import com.google.devtools.build.lib.clock.BlazeClock.NanosToMillisSinceEpochConverter;
import com.google.devtools.build.lib.metrics.MetricsModule.Options;
import com.google.devtools.build.lib.metrics.PostGCMemoryUseRecorder.PeakHeap;
-import com.google.devtools.build.lib.packages.metrics.PackageLoadMetrics;
-import com.google.devtools.build.lib.packages.metrics.PackageMetricsPackageLoadingListener;
-import com.google.devtools.build.lib.packages.metrics.PackageMetricsRecorder;
import com.google.devtools.build.lib.profiler.MemoryProfiler;
import com.google.devtools.build.lib.profiler.NetworkMetricsCollector;
import com.google.devtools.build.lib.profiler.Profiler;
@@ -113,10 +110,6 @@
numAnalyses.getAndIncrement();
}
- // For each of the 4 metrics allow only 10 entries to be printed when handling
- // extremes.
- private static final int MAX_EXTREME_PACKAGE_STATS = 4 * 10;
-
@SuppressWarnings("unused")
@Subscribe
public void onAnalysisPhaseComplete(AnalysisPhaseCompleteEvent event) {
@@ -128,22 +121,8 @@
targetMetrics
.setTargetsConfigured(targetsConfigured.total())
.setTargetsConfiguredNotIncludingAspects(targetsConfigured.configuredTargetsOnly());
- timingMetrics.setAnalysisPhaseTimeInMs(event.getTimeInMs());
-
packageMetrics.setPackagesLoaded(event.getPkgManagerStats().getPackagesSuccessfullyLoaded());
-
- if (PackageMetricsPackageLoadingListener.getInstance().getPublishPackageMetricsInBep()) {
- PackageMetricsRecorder recorder =
- PackageMetricsPackageLoadingListener.getInstance().getPackageMetricsRecorder();
- if (recorder != null) {
- Stream<PackageLoadMetrics> metrics =
- recorder.getRecorderType() == PackageMetricsRecorder.Type.ONLY_EXTREMES
- ? recorder.getPackageLoadMetrics().stream().limit(MAX_EXTREME_PACKAGE_STATS)
- : recorder.getPackageLoadMetrics().stream();
-
- metrics.forEach(packageMetrics::addPackageLoadMetrics);
- }
- }
+ timingMetrics.setAnalysisPhaseTimeInMs(event.getTimeInMs());
}
@SuppressWarnings("unused")
diff --git a/src/main/java/com/google/devtools/build/lib/packages/metrics/BUILD b/src/main/java/com/google/devtools/build/lib/packages/metrics/BUILD
index 4c481ab..4bbc6f1 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/metrics/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/packages/metrics/BUILD
@@ -16,7 +16,7 @@
name = "metrics",
srcs = glob(["*.java"]),
deps = [
- ":package_load_metrics_java_proto",
+ ":package_metrics_java_proto",
"//src/main/java/com/google/devtools/build/lib:runtime",
"//src/main/java/com/google/devtools/build/lib/analysis:analysis_cluster",
"//src/main/java/com/google/devtools/build/lib/cmdline",
@@ -35,26 +35,26 @@
)
proto_library(
- name = "package_load_metrics_proto",
- srcs = ["package_load_metrics.proto"],
+ name = "package_metrics_proto",
+ srcs = ["package_metrics.proto"],
deps = [
"@com_google_protobuf//:duration_proto",
],
)
java_proto_library(
- name = "package_load_metrics_java_proto",
+ name = "package_metrics_java_proto",
deps = [
- ":package_load_metrics_proto",
+ ":package_metrics_proto",
],
)
java_library_srcs(
- name = "package_load_metrics_java_proto_srcs",
- deps = [":package_load_metrics_java_proto"],
+ name = "package_metrics_java_proto_srcs",
+ deps = [":package_metrics_java_proto"],
)
filegroup(
name = "dist_jars",
- srcs = [":package_load_metrics_java_proto_srcs"],
+ srcs = [":package_metrics_java_proto_srcs"],
)
diff --git a/src/main/java/com/google/devtools/build/lib/packages/metrics/CompletePackageMetricsRecorder.java b/src/main/java/com/google/devtools/build/lib/packages/metrics/CompletePackageMetricsRecorder.java
index 2b29d4e..9a2222d 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/metrics/CompletePackageMetricsRecorder.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/metrics/CompletePackageMetricsRecorder.java
@@ -27,40 +27,40 @@
final class CompletePackageMetricsRecorder implements PackageMetricsRecorder {
@GuardedBy("this")
- private final HashMap<PackageIdentifier, PackageLoadMetrics> metrics = new HashMap<>();
+ private final HashMap<PackageIdentifier, PackageMetrics> metrics = new HashMap<>();
CompletePackageMetricsRecorder() {}
@Override
- public synchronized void recordMetrics(PackageIdentifier pkgId, PackageLoadMetrics metrics) {
+ public synchronized void recordMetrics(PackageIdentifier pkgId, PackageMetrics metrics) {
this.metrics.put(pkgId, metrics);
}
@Override
public synchronized Map<PackageIdentifier, Duration> getLoadTimes() {
- return Maps.transformValues(metrics, PackageLoadMetrics::getLoadDuration);
+ return Maps.transformValues(metrics, PackageMetrics::getLoadDuration);
}
@Override
public synchronized Map<PackageIdentifier, Long> getComputationSteps() {
- return Maps.transformValues(metrics, PackageLoadMetrics::getComputationSteps);
+ return Maps.transformValues(metrics, PackageMetrics::getComputationSteps);
}
@Override
public synchronized Map<PackageIdentifier, Long> getNumTargets() {
- return Maps.transformValues(metrics, PackageLoadMetrics::getNumTargets);
+ return Maps.transformValues(metrics, PackageMetrics::getNumTargets);
}
@Override
public synchronized Map<PackageIdentifier, Long> getNumTransitiveLoads() {
- return Maps.transformValues(metrics, PackageLoadMetrics::getNumTransitiveLoads);
+ return Maps.transformValues(metrics, PackageMetrics::getNumTransitiveLoads);
}
@Override
public synchronized Map<PackageIdentifier, Long> getPackageOverhead() {
return Maps.transformValues(
- Maps.filterValues(metrics, PackageLoadMetrics::hasPackageOverhead),
- PackageLoadMetrics::getPackageOverhead);
+ Maps.filterValues(metrics, PackageMetrics::hasPackageOverhead),
+ PackageMetrics::getPackageOverhead);
}
@Override
@@ -79,7 +79,7 @@
}
@Override
- public synchronized ImmutableCollection<PackageLoadMetrics> getPackageLoadMetrics() {
+ public synchronized ImmutableCollection<PackageMetrics> getPackageMetrics() {
// lazily set the pkgName when requested.
return metrics.entrySet().stream()
.map(e -> e.getValue().toBuilder().setName(e.getKey().toString()).build())
diff --git a/src/main/java/com/google/devtools/build/lib/packages/metrics/ExtremaPackageMetricsRecorder.java b/src/main/java/com/google/devtools/build/lib/packages/metrics/ExtremaPackageMetricsRecorder.java
index ca586d1..475344a 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/metrics/ExtremaPackageMetricsRecorder.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/metrics/ExtremaPackageMetricsRecorder.java
@@ -38,33 +38,33 @@
private static final GoogleLogger logger = GoogleLogger.forEnclosingClass();
@GuardedBy("this")
- private final Extrema<PackageLoadMetricsContainer> slowestPackagesToLoad;
+ private final Extrema<PackageMetricsContainer> slowestPackagesToLoad;
@GuardedBy("this")
- private final Extrema<PackageLoadMetricsContainer> largestPackages;
+ private final Extrema<PackageMetricsContainer> largestPackages;
@GuardedBy("this")
- private final Extrema<PackageLoadMetricsContainer> packagesWithMostTransitiveLoads;
+ private final Extrema<PackageMetricsContainer> packagesWithMostTransitiveLoads;
@GuardedBy("this")
- private final Extrema<PackageLoadMetricsContainer> packagesWithMostComputationSteps;
+ private final Extrema<PackageMetricsContainer> packagesWithMostComputationSteps;
@GuardedBy("this")
- private final Extrema<PackageLoadMetricsContainer> packagesWithMostOverhead;
+ private final Extrema<PackageMetricsContainer> packagesWithMostOverhead;
ExtremaPackageMetricsRecorder(int currentNumPackagesToTrack) {
Preconditions.checkArgument(currentNumPackagesToTrack >= 0, "num packages must be >= 0");
this.currentNumPackagesToTrack = currentNumPackagesToTrack;
this.slowestPackagesToLoad =
- Extrema.max(currentNumPackagesToTrack, PackageLoadMetricsContainer.LOAD_TIMES_COMP);
+ Extrema.max(currentNumPackagesToTrack, PackageMetricsContainer.LOAD_TIMES_COMP);
this.largestPackages =
- Extrema.max(currentNumPackagesToTrack, PackageLoadMetricsContainer.NUM_TARGETS_COMP);
+ Extrema.max(currentNumPackagesToTrack, PackageMetricsContainer.NUM_TARGETS_COMP);
this.packagesWithMostTransitiveLoads =
- Extrema.max(currentNumPackagesToTrack, PackageLoadMetricsContainer.TRANSITIVE_LOADS_COMP);
+ Extrema.max(currentNumPackagesToTrack, PackageMetricsContainer.TRANSITIVE_LOADS_COMP);
this.packagesWithMostComputationSteps =
- Extrema.max(currentNumPackagesToTrack, PackageLoadMetricsContainer.COMPUTATION_STEPS_COMP);
+ Extrema.max(currentNumPackagesToTrack, PackageMetricsContainer.COMPUTATION_STEPS_COMP);
this.packagesWithMostOverhead =
- Extrema.max(currentNumPackagesToTrack, PackageLoadMetricsContainer.OVERHEAD_COMP);
+ Extrema.max(currentNumPackagesToTrack, PackageMetricsContainer.OVERHEAD_COMP);
}
public int getNumPackageToTrack() {
@@ -72,8 +72,8 @@
}
@Override
- public synchronized void recordMetrics(PackageIdentifier pkgId, PackageLoadMetrics metrics) {
- PackageLoadMetricsContainer cont = PackageLoadMetricsContainer.create(pkgId, metrics);
+ public synchronized void recordMetrics(PackageIdentifier pkgId, PackageMetrics metrics) {
+ PackageMetricsContainer cont = PackageMetricsContainer.create(pkgId, metrics);
slowestPackagesToLoad.aggregate(cont);
packagesWithMostComputationSteps.aggregate(cont);
largestPackages.aggregate(cont);
@@ -88,40 +88,40 @@
return slowestPackagesToLoad.getExtremeElements().stream()
.collect(
Collectors.toMap(
- PackageLoadMetricsContainer::getPackageIdentifier,
- v -> v.getPackageLoadMetricsInternal().getLoadDuration(),
+ PackageMetricsContainer::getPackageIdentifier,
+ v -> v.getPackageMetricsInternal().getLoadDuration(),
(k, v) -> v,
LinkedHashMap::new)); // use a LinkedHashMap to ensure iteration order is maintained
}
@Override
public synchronized Map<PackageIdentifier, Long> getComputationSteps() {
- return toMap(packagesWithMostComputationSteps, PackageLoadMetrics::getComputationSteps);
+ return toMap(packagesWithMostComputationSteps, PackageMetrics::getComputationSteps);
}
@Override
public synchronized Map<PackageIdentifier, Long> getNumTargets() {
- return toMap(largestPackages, PackageLoadMetrics::getNumTargets);
+ return toMap(largestPackages, PackageMetrics::getNumTargets);
}
@Override
public synchronized Map<PackageIdentifier, Long> getNumTransitiveLoads() {
- return toMap(packagesWithMostTransitiveLoads, PackageLoadMetrics::getNumTransitiveLoads);
+ return toMap(packagesWithMostTransitiveLoads, PackageMetrics::getNumTransitiveLoads);
}
@Override
public synchronized Map<PackageIdentifier, Long> getPackageOverhead() {
- return toMap(packagesWithMostOverhead, PackageLoadMetrics::getPackageOverhead);
+ return toMap(packagesWithMostOverhead, PackageMetrics::getPackageOverhead);
}
private synchronized Map<PackageIdentifier, Long> toMap(
- Extrema<PackageLoadMetricsContainer> ext, Function<PackageLoadMetrics, Long> fn) {
+ Extrema<PackageMetricsContainer> ext, Function<PackageMetrics, Long> fn) {
return ext.getExtremeElements().stream()
.collect(
Collectors.toMap(
- PackageLoadMetricsContainer::getPackageIdentifier,
- v -> fn.apply(v.getPackageLoadMetricsInternal()),
+ PackageMetricsContainer::getPackageIdentifier,
+ v -> fn.apply(v.getPackageMetricsInternal()),
(k, v) -> v,
LinkedHashMap::new)); // use a LinkedHashMap to ensure iteration order is maintained
}
@@ -140,23 +140,23 @@
logIfNonEmpty(
"Slowest packages (ms)",
slowestPackagesToLoad.getExtremeElements(),
- c -> Durations.toMillis(c.getPackageLoadMetricsInternal().getLoadDuration()));
+ c -> Durations.toMillis(c.getPackageMetricsInternal().getLoadDuration()));
logIfNonEmpty(
"Largest packages (num targets)",
largestPackages.getExtremeElements(),
- c -> c.getPackageLoadMetricsInternal().getNumTargets());
+ c -> c.getPackageMetricsInternal().getNumTargets());
logIfNonEmpty(
"Packages with most computation steps",
packagesWithMostComputationSteps.getExtremeElements(),
- c -> c.getPackageLoadMetricsInternal().getComputationSteps());
+ c -> c.getPackageMetricsInternal().getComputationSteps());
logIfNonEmpty(
"Packages with most transitive loads (num bzl files)",
packagesWithMostTransitiveLoads.getExtremeElements(),
- c -> c.getPackageLoadMetricsInternal().getNumTransitiveLoads());
+ c -> c.getPackageMetricsInternal().getNumTransitiveLoads());
logIfNonEmpty(
"Packages with most overhead",
packagesWithMostOverhead.getExtremeElements(),
- c -> c.getPackageLoadMetricsInternal().getPackageOverhead());
+ c -> c.getPackageMetricsInternal().getPackageOverhead());
clear();
}
@@ -166,21 +166,21 @@
}
@Override
- public synchronized Collection<PackageLoadMetrics> getPackageLoadMetrics() {
+ public synchronized Collection<PackageMetrics> getPackageMetrics() {
return Streams.concat(
slowestPackagesToLoad.getExtremeElements().stream(),
packagesWithMostComputationSteps.getExtremeElements().stream(),
largestPackages.getExtremeElements().stream(),
packagesWithMostTransitiveLoads.getExtremeElements().stream(),
packagesWithMostOverhead.getExtremeElements().stream())
- .map(PackageLoadMetricsContainer::getPackageLoadMetrics)
+ .map(PackageMetricsContainer::getPackageMetrics)
.collect(toImmutableSet());
}
private static void logIfNonEmpty(
String logLinePrefix,
- List<PackageLoadMetricsContainer> extremeElements,
- Function<PackageLoadMetricsContainer, Long> valueMapper) {
+ List<PackageMetricsContainer> extremeElements,
+ Function<PackageMetricsContainer, Long> valueMapper) {
List<String> logString =
extremeElements.stream()
.map(v -> String.format("%s (%d)", v.getPackageIdentifier(), valueMapper.apply(v)))
diff --git a/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageLoadMetricsContainer.java b/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageLoadMetricsContainer.java
deleted file mode 100644
index 6ff0799..0000000
--- a/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageLoadMetricsContainer.java
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2020 The Bazel Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package com.google.devtools.build.lib.packages.metrics;
-
-import com.google.auto.value.AutoValue;
-import com.google.devtools.build.lib.cmdline.PackageIdentifier;
-import com.google.protobuf.util.Durations;
-import java.util.Comparator;
-
-/** Container class holding a PackageIdentifier and PackageMetrics proto. */
-@AutoValue
-public abstract class PackageLoadMetricsContainer {
-
- /** Sorts by LoadTime Duration. */
- public static final Comparator<PackageLoadMetricsContainer> LOAD_TIMES_COMP =
- Comparator.comparing(
- c -> c.getPackageLoadMetricsInternal().getLoadDuration(), Durations.comparator());
- /** Sorts by Num Target count . */
- public static final Comparator<PackageLoadMetricsContainer> NUM_TARGETS_COMP =
- Comparator.comparingLong(c -> c.getPackageLoadMetricsInternal().getNumTargets());
- /** Sorts by Comutation Steps count. */
- public static final Comparator<PackageLoadMetricsContainer> COMPUTATION_STEPS_COMP =
- Comparator.comparingLong(c -> c.getPackageLoadMetricsInternal().getComputationSteps());
- /** Sorts by Transitive Load Count. */
- public static final Comparator<PackageLoadMetricsContainer> TRANSITIVE_LOADS_COMP =
- Comparator.comparingLong(c -> c.getPackageLoadMetricsInternal().getNumTransitiveLoads());
- /** Sorts by Package Overhead. */
- public static final Comparator<PackageLoadMetricsContainer> OVERHEAD_COMP =
- Comparator.comparingLong(c -> c.getPackageLoadMetricsInternal().getPackageOverhead());
-
- public static PackageLoadMetricsContainer create(
- PackageIdentifier pkgId, PackageLoadMetrics metrics) {
- return new AutoValue_PackageLoadMetricsContainer(pkgId, metrics);
- }
-
- public abstract PackageIdentifier getPackageIdentifier();
-
- abstract PackageLoadMetrics getPackageLoadMetricsInternal();
-
- /** Construct a full PackageMetrics object with the name set lazily from the PackageIdentifier. */
- public PackageLoadMetrics getPackageLoadMetrics() {
- return getPackageLoadMetricsInternal().toBuilder()
- .setName(getPackageIdentifier().toString())
- .build();
- }
-}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsContainer.java b/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsContainer.java
new file mode 100644
index 0000000..4cab05a
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsContainer.java
@@ -0,0 +1,56 @@
+// Copyright 2020 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package com.google.devtools.build.lib.packages.metrics;
+
+import com.google.auto.value.AutoValue;
+import com.google.devtools.build.lib.cmdline.PackageIdentifier;
+import com.google.protobuf.util.Durations;
+import java.util.Comparator;
+
+/** Container class holding a PackageIdentifier and PackageMetrics proto. */
+@AutoValue
+public abstract class PackageMetricsContainer {
+
+ /** Sorts by LoadTime Duration. */
+ public static final Comparator<PackageMetricsContainer> LOAD_TIMES_COMP =
+ Comparator.comparing(
+ c -> c.getPackageMetricsInternal().getLoadDuration(), Durations.comparator());
+ /** Sorts by Num Target count . */
+ public static final Comparator<PackageMetricsContainer> NUM_TARGETS_COMP =
+ Comparator.comparingLong(c -> c.getPackageMetricsInternal().getNumTargets());
+ /** Sorts by Comutation Steps count. */
+ public static final Comparator<PackageMetricsContainer> COMPUTATION_STEPS_COMP =
+ Comparator.comparingLong(c -> c.getPackageMetricsInternal().getComputationSteps());
+ /** Sorts by Transitive Load Count. */
+ public static final Comparator<PackageMetricsContainer> TRANSITIVE_LOADS_COMP =
+ Comparator.comparingLong(c -> c.getPackageMetricsInternal().getNumTransitiveLoads());
+ /** Sorts by Package Overhead. */
+ public static final Comparator<PackageMetricsContainer> OVERHEAD_COMP =
+ Comparator.comparingLong(c -> c.getPackageMetricsInternal().getPackageOverhead());
+
+ public static PackageMetricsContainer create(PackageIdentifier pkgId, PackageMetrics metrics) {
+ return new AutoValue_PackageMetricsContainer(pkgId, metrics);
+ }
+
+ public abstract PackageIdentifier getPackageIdentifier();
+
+ abstract PackageMetrics getPackageMetricsInternal();
+
+ /** Construct a full PackageMetrics object with the name set lazily from the PackageIdentifier. */
+ public PackageMetrics getPackageMetrics() {
+ return getPackageMetricsInternal().toBuilder()
+ .setName(getPackageIdentifier().toString())
+ .build();
+ }
+}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsModule.java b/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsModule.java
index f96d10d..19b5323 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsModule.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsModule.java
@@ -48,14 +48,6 @@
"Configures PackageMetrics to record all metrics for all packages. Disables Top-n INFO"
+ " logging.")
public boolean enableAllMetrics;
-
- @Option(
- name = "experimental_publish_package_metrics_in_bep",
- defaultValue = "false",
- documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
- effectTags = {OptionEffectTag.BAZEL_MONITORING},
- help = "Whether to publish package metrics in the BEP.")
- public boolean publishPackageMetricsInBep;
}
private final PackageMetricsPackageLoadingListener packageLoadingListener;
@@ -91,7 +83,6 @@
? new CompletePackageMetricsRecorder()
: new ExtremaPackageMetricsRecorder(Math.max(options.numberOfPackagesToTrack, 0));
packageLoadingListener.setPackageMetricsRecorder(recorder);
- packageLoadingListener.setPublishPackageMetricsInBep(options.publishPackageMetricsInBep);
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsPackageLoadingListener.java b/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsPackageLoadingListener.java
index 274efc2..053acc4 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsPackageLoadingListener.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsPackageLoadingListener.java
@@ -26,8 +26,6 @@
@GuardedBy("this")
private PackageMetricsRecorder recorder;
- private boolean publishPackageMetricsInBep = false;
-
@GuardedBy("PackageMetricsPackageLoadingListener.class")
private static PackageMetricsPackageLoadingListener instance = null;
@@ -53,8 +51,8 @@
return;
}
- PackageLoadMetrics.Builder builder =
- PackageLoadMetrics.newBuilder()
+ PackageMetrics.Builder builder =
+ PackageMetrics.newBuilder()
.setLoadDuration(Durations.fromNanos(loadTimeNanos))
.setComputationSteps(pkg.getComputationSteps())
.setNumTargets(pkg.getTargets().size())
@@ -72,14 +70,6 @@
this.recorder = recorder;
}
- public void setPublishPackageMetricsInBep(boolean publishPackageMetricsInBep) {
- this.publishPackageMetricsInBep = publishPackageMetricsInBep;
- }
-
- public boolean getPublishPackageMetricsInBep() {
- return publishPackageMetricsInBep;
- }
-
/** Returns the PackageMetricsRecorder, if any, for the PackageLoadingListener. */
public synchronized PackageMetricsRecorder getPackageMetricsRecorder() {
return recorder;
diff --git a/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsRecorder.java b/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsRecorder.java
index f8b4cc4..79ea6c6 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsRecorder.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsRecorder.java
@@ -28,7 +28,7 @@
}
/** Records the metrics for a given package. */
- void recordMetrics(PackageIdentifier pkgId, PackageLoadMetrics metrics);
+ void recordMetrics(PackageIdentifier pkgId, PackageMetrics metrics);
/**
* Returns a {@code Map<PackageIdentifier, Duration>} of recorded load durations. This may contain
@@ -70,5 +70,5 @@
Type getRecorderType();
/** If Type is ALL returns metrics for all Packages loaded. */
- Collection<PackageLoadMetrics> getPackageLoadMetrics();
+ Collection<PackageMetrics> getPackageMetrics();
}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/metrics/package_load_metrics.proto b/src/main/java/com/google/devtools/build/lib/packages/metrics/package_metrics.proto
similarity index 91%
rename from src/main/java/com/google/devtools/build/lib/packages/metrics/package_load_metrics.proto
rename to src/main/java/com/google/devtools/build/lib/packages/metrics/package_metrics.proto
index e27ecce..c643fcd 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/metrics/package_load_metrics.proto
+++ b/src/main/java/com/google/devtools/build/lib/packages/metrics/package_metrics.proto
@@ -20,12 +20,12 @@
option java_package = "com.google.devtools.build.lib.packages.metrics";
option java_multiple_files = true;
-// Message used to concisely report all package metrics.
-message PackageLoadMetrics {
+// Message used to consisely report all package metrics.
+message PackageMetrics {
// Name of the package.
optional string name = 1;
- // Wall-time duration it took to construct the package.
+ // Walltime Duration it took to construct the package.
optional google.protobuf.Duration load_duration = 2;
// Number of targets created in the package.
diff --git a/src/test/java/com/google/devtools/build/lib/packages/metrics/BUILD b/src/test/java/com/google/devtools/build/lib/packages/metrics/BUILD
index 366c3ca..db6852f 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/metrics/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/packages/metrics/BUILD
@@ -21,7 +21,7 @@
"//src/main/java/com/google/devtools/build/lib/cmdline",
"//src/main/java/com/google/devtools/build/lib/packages",
"//src/main/java/com/google/devtools/build/lib/packages/metrics",
- "//src/main/java/com/google/devtools/build/lib/packages/metrics:package_load_metrics_java_proto",
+ "//src/main/java/com/google/devtools/build/lib/packages/metrics:package_metrics_java_proto",
"//src/main/java/net/starlark/java/eval",
"//third_party:guava",
"//third_party:junit4",
diff --git a/src/test/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsPackageLoadingListenerTest.java b/src/test/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsPackageLoadingListenerTest.java
index 9df24da..1991882 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsPackageLoadingListenerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/metrics/PackageMetricsPackageLoadingListenerTest.java
@@ -410,8 +410,8 @@
recordEverything();
- PackageLoadMetrics pkg1 =
- PackageLoadMetrics.newBuilder()
+ PackageMetrics pkg1 =
+ PackageMetrics.newBuilder()
.setName("my/pkg1")
.setLoadDuration(Durations.fromMillis(42))
.setComputationSteps(1000)
@@ -420,8 +420,8 @@
.setPackageOverhead(100_000)
.build();
- PackageLoadMetrics pkg2 =
- PackageLoadMetrics.newBuilder()
+ PackageMetrics pkg2 =
+ PackageMetrics.newBuilder()
.setName("my/pkg2")
.setLoadDuration(Durations.fromMillis(43))
.setComputationSteps(100)
@@ -430,8 +430,8 @@
.setPackageOverhead(200_000)
.build();
- PackageLoadMetrics pkg3 =
- PackageLoadMetrics.newBuilder()
+ PackageMetrics pkg3 =
+ PackageMetrics.newBuilder()
.setName("my/pkg3")
.setLoadDuration(Durations.fromMillis(44))
.setComputationSteps(10)
@@ -440,7 +440,7 @@
.setPackageOverhead(300_000)
.build();
- assertThat(underTest.getPackageMetricsRecorder().getPackageLoadMetrics())
+ assertThat(underTest.getPackageMetricsRecorder().getPackageMetrics())
.containsExactly(pkg1, pkg2, pkg3);
recorder.loadingFinished();
assertAllMapsEmpty(recorder);
@@ -453,8 +453,8 @@
recordEverything();
- PackageLoadMetrics pkg1 =
- PackageLoadMetrics.newBuilder()
+ PackageMetrics pkg1 =
+ PackageMetrics.newBuilder()
.setName("my/pkg1")
.setLoadDuration(Durations.fromMillis(42))
.setComputationSteps(1000)
@@ -463,8 +463,8 @@
.setPackageOverhead(100_000)
.build();
- PackageLoadMetrics pkg2 =
- PackageLoadMetrics.newBuilder()
+ PackageMetrics pkg2 =
+ PackageMetrics.newBuilder()
.setName("my/pkg2")
.setLoadDuration(Durations.fromMillis(43))
.setComputationSteps(100)
@@ -473,8 +473,8 @@
.setPackageOverhead(200_000)
.build();
- PackageLoadMetrics pkg3 =
- PackageLoadMetrics.newBuilder()
+ PackageMetrics pkg3 =
+ PackageMetrics.newBuilder()
.setName("my/pkg3")
.setLoadDuration(Durations.fromMillis(44))
.setComputationSteps(10)
@@ -483,7 +483,7 @@
.setPackageOverhead(300_000)
.build();
- assertThat(underTest.getPackageMetricsRecorder().getPackageLoadMetrics())
+ assertThat(underTest.getPackageMetricsRecorder().getPackageMetrics())
.containsExactly(pkg1, pkg2, pkg3);
recorder.loadingFinished();
assertAllMapsEmpty(recorder);