sweet: fix redundant runs in pgo benchmarks This CL fix a bug that duplicates benchmark runs for every configs if it's under pgo settings. The unnecessary codes are removed. Change-Id: Ic03294034ace4534802eefa96cc113646d8ed159 Reviewed-on: https://go-review.googlesource.com/c/benchmarks/+/621535 Reviewed-by: Michael Pratt <mpratt@google.com> Reviewed-by: Junyang Shao <shaojunyang@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Auto-Submit: Junyang Shao <shaojunyang@google.com>
diff --git a/sweet/cmd/sweet/run.go b/sweet/cmd/sweet/run.go index 92ba5c9..2d222c8 100644 --- a/sweet/cmd/sweet/run.go +++ b/sweet/cmd/sweet/run.go
@@ -427,31 +427,33 @@ // Merge all the profiles and add new PGO configs. newConfigs := configs - var successfullyMergedBenchmarks []*benchmark for i := range configs { origConfig := configs[i] profileConfig := profileConfigs[i] pgoConfig := origConfig.Copy() pgoConfig.Name += ".pgo" pgoConfig.PGOFiles = make(map[string]string) + noMergeError := true for _, b := range successfullyExecutedBenchmarks { p, err := mergeCPUProfiles(profileRunCfg.runProfilesDir(b, profileConfig)) if err != nil { log.Error(fmt.Errorf("error merging profiles for %s/%s: %w", b.name, profileConfig.Name, err)) + noMergeError = false } else { - successfullyMergedBenchmarks = append(successfullyMergedBenchmarks, b) pgoConfig.PGOFiles[b.name] = p } } - newConfigs = append(newConfigs, pgoConfig) + if noMergeError { + newConfigs = append(newConfigs, pgoConfig) + } } if len(successfullyExecutedBenchmarks) == 0 { return nil, nil, fmt.Errorf("failed to merge profiles for any benchmarks, see logs for more details") } - return newConfigs, successfullyMergedBenchmarks, nil + return newConfigs, successfullyExecutedBenchmarks, nil } var cpuProfileRe = regexp.MustCompile(`-cpu\.prof$`)