aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAleksandr Nogikh <nogikh@google.com>2024-09-10 11:43:36 +0200
committerAleksandr Nogikh <nogikh@google.com>2024-09-12 08:31:00 +0000
commita9b3cc208d6569ddc1dff5647ab5ba19050a3d53 (patch)
tree637f74091fa6d3cec72786dffcf2c90db092796b
parentd94c83d8ace830ea2b5a52a5bb82d96e75d59e5d (diff)
dashboard: refactor relevantBackportJobs()
Make it return a single slice.
-rw-r--r--dashboard/app/api.go8
-rw-r--r--dashboard/app/jobs.go39
-rw-r--r--dashboard/app/main.go7
3 files changed, 28 insertions, 26 deletions
diff --git a/dashboard/app/api.go b/dashboard/app/api.go
index eeb8cd565..dfc040932 100644
--- a/dashboard/app/api.go
+++ b/dashboard/app/api.go
@@ -274,16 +274,16 @@ func apiCommitPoll(c context.Context, ns string, r *http.Request, payload []byte
func pollBackportCommits(c context.Context, ns string, count int) ([]string, error) {
// Let's assume that there won't be too many pending backports.
- bugs, jobs, _, err := relevantBackportJobs(c)
+ list, err := relevantBackportJobs(c)
if err != nil {
return nil, fmt.Errorf("failed to query backport: %w", err)
}
var backportTitles []string
- for i, bug := range bugs {
- if bug.Namespace != ns {
+ for _, info := range list {
+ if info.bug.Namespace != ns {
continue
}
- backportTitles = append(backportTitles, jobs[i].Commits[0].Title)
+ backportTitles = append(backportTitles, info.job.Commits[0].Title)
}
randomizer := rand.New(rand.NewSource(timeNow(c).UnixNano()))
randomizer.Shuffle(len(backportTitles), func(i, j int) {
diff --git a/dashboard/app/jobs.go b/dashboard/app/jobs.go
index 6ac0ca322..d697c734b 100644
--- a/dashboard/app/jobs.go
+++ b/dashboard/app/jobs.go
@@ -1628,45 +1628,46 @@ func uniqueBugs(c context.Context, inBugs []*Bug, inKeys []*db.Key) ([]*Bug, []*
return bugs, keys
}
-func relevantBackportJobs(c context.Context) (
- bugs []*Bug, jobs []*Job, jobKeys []*db.Key, err error) {
+type backportInfo struct {
+ bug *Bug
+ job *Job
+ jobKey *db.Key
+}
+
+func relevantBackportJobs(c context.Context) ([]backportInfo, error) {
allBugs, _, bugsErr := loadAllBugs(c, func(query *db.Query) *db.Query {
return query.Filter("FixCandidateJob>", "").Filter("Status=", BugStatusOpen)
})
if bugsErr != nil {
- err = bugsErr
- return
+ return nil, bugsErr
}
var allJobKeys []*db.Key
for _, bug := range allBugs {
jobKey, decodeErr := db.DecodeKey(bug.FixCandidateJob)
if decodeErr != nil {
- err = decodeErr
- return
+ return nil, decodeErr
}
allJobKeys = append(allJobKeys, jobKey)
}
allJobs := make([]*Job, len(allJobKeys))
- err = db.GetMulti(c, allJobKeys, allJobs)
+ err := db.GetMulti(c, allJobKeys, allJobs)
if err != nil {
- return
+ return nil, err
}
+ var list []backportInfo
for i, job := range allJobs {
// Some assertions just in case.
jobKey := allJobKeys[i]
if !job.IsCrossTree() {
- err = fmt.Errorf("job %s: expected to be cross-tree", jobKey)
- return
+ return nil, fmt.Errorf("job %s: expected to be cross-tree", jobKey)
}
if len(job.Commits) != 1 || job.InvalidatedBy != "" ||
job.BackportedCommit.Title != "" {
continue
}
- bugs = append(bugs, allBugs[i])
- jobs = append(jobs, job)
- jobKeys = append(jobKeys, jobKey)
+ list = append(list, backportInfo{bug: allBugs[i], job: job, jobKey: jobKey})
}
- return
+ return list, nil
}
func updateBackportCommits(c context.Context, ns string, commits []dashapi.Commit) error {
@@ -1677,16 +1678,16 @@ func updateBackportCommits(c context.Context, ns string, commits []dashapi.Commi
for _, commit := range commits {
perTitle[commit.Title] = commit
}
- bugs, jobs, jobKeys, err := relevantBackportJobs(c)
+ list, err := relevantBackportJobs(c)
if err != nil {
return fmt.Errorf("failed to query backport jobs: %w", err)
}
- for i, job := range jobs {
- rawCommit, ok := perTitle[job.Commits[0].Title]
+ for _, info := range list {
+ rawCommit, ok := perTitle[info.job.Commits[0].Title]
if !ok {
continue
}
- if bugs[i].Namespace != ns {
+ if info.bug.Namespace != ns {
continue
}
commit := Commit{
@@ -1696,7 +1697,7 @@ func updateBackportCommits(c context.Context, ns string, commits []dashapi.Commi
AuthorName: rawCommit.AuthorName,
Date: rawCommit.Date,
}
- err := commitBackported(c, jobKeys[i], commit)
+ err := commitBackported(c, info.jobKey, commit)
if err != nil {
return fmt.Errorf("failed to update backport job: %w", err)
}
diff --git a/dashboard/app/main.go b/dashboard/app/main.go
index 5d11f9951..79b6aa66d 100644
--- a/dashboard/app/main.go
+++ b/dashboard/app/main.go
@@ -771,13 +771,14 @@ type rawBackport struct {
}
func loadAllBackports(c context.Context) ([]*rawBackport, error) {
- bugs, jobs, _, err := relevantBackportJobs(c)
+ list, err := relevantBackportJobs(c)
if err != nil {
return nil, err
}
var ret []*rawBackport
perCommit := map[string]*rawBackport{}
- for i, job := range jobs {
+ for _, info := range list {
+ job := info.job
jobCommit := job.Commits[0]
to := &uiRepo{URL: job.MergeBaseRepo, Branch: job.MergeBaseBranch}
from := &uiRepo{URL: job.KernelRepo, Branch: job.KernelBranch}
@@ -800,7 +801,7 @@ func loadAllBackports(c context.Context) ([]*rawBackport, error) {
ret = append(ret, backport)
perCommit[hash] = backport
}
- backport.Bugs = append(backport.Bugs, bugs[i])
+ backport.Bugs = append(backport.Bugs, info.bug)
}
return ret, nil
}