Collect build metrics just prior to BuildCompleteEvent. RELNOTES: None PiperOrigin-RevId: 287189221
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/BuildPrecompleteEvent.java b/src/main/java/com/google/devtools/build/lib/buildtool/BuildPrecompleteEvent.java new file mode 100644 index 0000000..b325ed9 --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/buildtool/BuildPrecompleteEvent.java
@@ -0,0 +1,20 @@ +// Copyright 2019 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.buildtool; + +/** + * This event is fired from BuildTool#stopRequest() just before {@link + * com.google.devtools.build.lib.buildtool.buildevent.BuildCompleteEvent}. + */ +public final class BuildPrecompleteEvent {}
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 771d89a..c667362 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
@@ -380,6 +380,8 @@ // The stop time has to be captured before we send the BuildCompleteEvent. result.setStopTime(runtime.getClock().currentTimeMillis()); result.setWasSuspended(stopSuspendCount > startSuspendCount); + + env.getEventBus().post(new BuildPrecompleteEvent()); env.getEventBus() .post( new BuildCompleteEvent(
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 0604397..c80bea7 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
@@ -22,7 +22,7 @@ import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics; import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics; import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics; -import com.google.devtools.build.lib.buildtool.buildevent.BuildCompleteEvent; +import com.google.devtools.build.lib.buildtool.BuildPrecompleteEvent; import com.google.devtools.build.lib.metrics.MetricsModule.Options; import com.google.devtools.build.lib.runtime.CommandEnvironment; import java.lang.management.ManagementFactory; @@ -67,7 +67,7 @@ } @Subscribe - public void onBuildComplete(BuildCompleteEvent event) { + public void onBuildComplete(BuildPrecompleteEvent event) { env.getEventBus().post(new BuildMetricsEvent(createBuildMetrics())); }