From 036b5a3ed3b1ad452889b1e2bbf3f69e3d34720d Mon Sep 17 00:00:00 2001 From: Jeongik Cha Date: Wed, 22 Mar 2023 17:31:48 +0900 Subject: [PATCH] Fix possible race condition Test: m Bug: 271526845 Change-Id: I8b8d57c45d9be3b538422588521bcfd85b61aa56 --- cmd/soong_ui/main.go | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/cmd/soong_ui/main.go b/cmd/soong_ui/main.go index 3d8458cf3..301246a88 100644 --- a/cmd/soong_ui/main.go +++ b/cmd/soong_ui/main.go @@ -169,7 +169,7 @@ func main() { // Create a new Status instance, which manages action counts and event output channels. stat := &status.Status{} - defer stat.Finish() + // Hook up the terminal output and tracer to Status. stat.AddOutput(output) stat.AddOutput(trace.StatusTracer()) @@ -221,13 +221,14 @@ func main() { trace.SetOutput(filepath.Join(logsDir, c.logsPrefix+"build.trace")) - if !config.SkipMetricsUpload() { - defer build.UploadMetrics(buildCtx, config, c.simpleOutput, buildStarted, bazelProfileFile, bazelMetricsFile, metricsFiles...) - } - defer met.Dump(soongMetricsFile) - // Should run before Metric.Dump - defer criticalPath.WriteToMetrics(met) - + defer func() { + stat.Finish() + criticalPath.WriteToMetrics(met) + met.Dump(soongMetricsFile) + if !config.SkipMetricsUpload() { + build.UploadMetrics(buildCtx, config, c.simpleOutput, buildStarted, bazelProfileFile, bazelMetricsFile, metricsFiles...) + } + }() c.run(buildCtx, config, args) }