From 183afb6ca0e10390716c3552869388faedd7b69f Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Mon, 1 Mar 2021 19:59:18 +0100 Subject: dashboard/app: show similar bugs based on alt titles The alt titles provice a good source of info for "similar bugs". Extend similar bugs to include matches of alt titles for older bugs and/or across namespaces. Update #1575 --- dashboard/app/main.go | 45 +++++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/dashboard/app/main.go b/dashboard/app/main.go index 723873f02..02f55c665 100644 --- a/dashboard/app/main.go +++ b/dashboard/app/main.go @@ -709,35 +709,36 @@ func loadDupsForBug(c context.Context, r *http.Request, bug *Bug, state *Reporti } func loadSimilarBugs(c context.Context, r *http.Request, bug *Bug, state *ReportingState) (*uiBugGroup, error) { - var similar []*Bug - _, err := db.NewQuery("Bug"). - Filter("Title=", bug.Title). - GetAll(c, &similar) - if err != nil { - return nil, err - } managers := make(map[string][]string) var results []*uiBug accessLevel := accessLevel(c, r) domain := config.Namespaces[bug.Namespace].SimilarityDomain - for _, similar := range similar { - if accessLevel < similar.sanitizeAccess(accessLevel) { - continue - } - if similar.Namespace == bug.Namespace && similar.Seq == bug.Seq { - continue - } - if config.Namespaces[similar.Namespace].SimilarityDomain != domain { - continue + dedup := make(map[string]bool) + dedup[bug.keyHash()] = true + for _, title := range bug.AltTitles { + var similar []*Bug + _, err := db.NewQuery("Bug"). + Filter("AltTitles=", title). + GetAll(c, &similar) + if err != nil { + return nil, err } - if managers[similar.Namespace] == nil { - mgrs, err := managerList(c, similar.Namespace) - if err != nil { - return nil, err + for _, similar := range similar { + if accessLevel < similar.sanitizeAccess(accessLevel) || + config.Namespaces[similar.Namespace].SimilarityDomain != domain || + dedup[similar.keyHash()] { + continue + } + dedup[similar.keyHash()] = true + if managers[similar.Namespace] == nil { + mgrs, err := managerList(c, similar.Namespace) + if err != nil { + return nil, err + } + managers[similar.Namespace] = mgrs } - managers[similar.Namespace] = mgrs + results = append(results, createUIBug(c, similar, state, managers[similar.Namespace])) } - results = append(results, createUIBug(c, similar, state, managers[similar.Namespace])) } group := &uiBugGroup{ Now: timeNow(c), -- cgit mrf-deployment