aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2021-03-01 19:59:18 +0100
committerDmitry Vyukov <dvyukov@google.com>2021-03-01 20:24:58 +0100
commit183afb6ca0e10390716c3552869388faedd7b69f (patch)
treea3a94a4fd470adced97be6a422a4c00b0ec451e2
parentad8757692b20b95fec397f8fe27d94cdaa83c66d (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.go45
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),