aboutsummaryrefslogtreecommitdiffstats
path: root/dashboard
diff options
context:
space:
mode:
authorAleksandr Nogikh <nogikh@google.com>2022-12-07 16:16:03 +0100
committerAleksandr Nogikh <wp32pw@gmail.com>2022-12-09 13:55:42 +0100
commitbe94e4895a14874a42683e09e433cbdb1d7f81d2 (patch)
treeca0145c6c50bcfcf5e287cf7ef26816eb7bcabeb /dashboard
parentcaafa4e63d474f9cecf5197d274defbe27fe51f3 (diff)
dashboard: split loadSimilarBugs()
Split loadSimilarBugs() into a UI-facing part and a DB-facing part.
Diffstat (limited to 'dashboard')
-rw-r--r--dashboard/app/entities.go26
-rw-r--r--dashboard/app/main.go43
2 files changed, 42 insertions, 27 deletions
diff --git a/dashboard/app/entities.go b/dashboard/app/entities.go
index 67b0e5744..c28eccc2d 100644
--- a/dashboard/app/entities.go
+++ b/dashboard/app/entities.go
@@ -558,6 +558,32 @@ func bugKeyHash(ns, title string, seq int64) string {
return hash.String([]byte(fmt.Sprintf("%v-%v-%v-%v", config.Namespaces[ns].Key, ns, title, seq)))
}
+func loadSimilarBugs(c context.Context, bug *Bug) ([]*Bug, error) {
+ domain := config.Namespaces[bug.Namespace].SimilarityDomain
+ dedup := make(map[string]bool)
+ dedup[bug.keyHash()] = true
+
+ ret := []*Bug{}
+ for _, title := range bug.AltTitles {
+ var similar []*Bug
+ _, err := db.NewQuery("Bug").
+ Filter("AltTitles=", title).
+ GetAll(c, &similar)
+ if err != nil {
+ return nil, err
+ }
+ for _, bug := range similar {
+ if config.Namespaces[bug.Namespace].SimilarityDomain != domain ||
+ dedup[bug.keyHash()] {
+ continue
+ }
+ dedup[bug.keyHash()] = true
+ ret = append(ret, bug)
+ }
+ }
+ return ret, nil
+}
+
// Since these IDs appear in Reported-by tags in commit, we slightly limit their size.
const reportingHashLen = 20
diff --git a/dashboard/app/main.go b/dashboard/app/main.go
index 348ddf9e5..3787ec644 100644
--- a/dashboard/app/main.go
+++ b/dashboard/app/main.go
@@ -420,7 +420,7 @@ func handleBug(c context.Context, w http.ResponseWriter, r *http.Request) error
if err != nil {
return err
}
- similar, err := loadSimilarBugs(c, r, bug, state)
+ similar, err := loadSimilarBugsUI(c, r, bug, state)
if err != nil {
return err
}
@@ -829,37 +829,26 @@ func loadDupsForBug(c context.Context, r *http.Request, bug *Bug, state *Reporti
return group, nil
}
-func loadSimilarBugs(c context.Context, r *http.Request, bug *Bug, state *ReportingState) (*uiBugGroup, error) {
+func loadSimilarBugsUI(c context.Context, r *http.Request, bug *Bug, state *ReportingState) (*uiBugGroup, error) {
managers := make(map[string][]string)
- var results []*uiBug
accessLevel := accessLevel(c, r)
- domain := config.Namespaces[bug.Namespace].SimilarityDomain
- 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
+ similarBugs, err := loadSimilarBugs(c, bug)
+ if err != nil {
+ return nil, err
+ }
+ var results []*uiBug
+ for _, similar := range similarBugs {
+ if accessLevel < similar.sanitizeAccess(accessLevel) {
+ continue
}
- 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
+ if managers[similar.Namespace] == nil {
+ mgrs, err := managerList(c, similar.Namespace)
+ if err != nil {
+ return nil, err
}
- results = append(results, createUIBug(c, similar, state, managers[similar.Namespace]))
+ managers[similar.Namespace] = mgrs
}
+ results = append(results, createUIBug(c, similar, state, managers[similar.Namespace]))
}
group := &uiBugGroup{
Now: timeNow(c),