diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2021-03-01 19:59:18 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2021-03-01 20:24:58 +0100 |
| commit | 183afb6ca0e10390716c3552869388faedd7b69f (patch) | |
| tree | a3a94a4fd470adced97be6a422a4c00b0ec451e2 | |
| parent | ad8757692b20b95fec397f8fe27d94cdaa83c66d (diff) | |
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
| -rw-r--r-- | dashboard/app/main.go | 45 |
1 files 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), |
