Skip to content

Commit 2d1a1fc

Browse files
authored
Cache users on list releases (#527)
1 parent 6f4ba68 commit 2d1a1fc

File tree

1 file changed

+22
-14
lines changed

1 file changed

+22
-14
lines changed

routers/repo/release.go

+22-14
Original file line numberDiff line numberDiff line change
@@ -73,21 +73,26 @@ func Releases(ctx *context.Context) {
7373
// Temproray cache commits count of used branches to speed up.
7474
countCache := make(map[string]int64)
7575

76+
var cacheUsers = make(map[int64]*models.User)
77+
var ok bool
7678
tags := make([]*models.Release, len(rawTags))
7779
for i, rawTag := range rawTags {
7880
for j, r := range releases {
7981
if r == nil || (r.IsDraft && !ctx.Repo.IsOwner()) {
8082
continue
8183
}
8284
if r.TagName == rawTag {
83-
r.Publisher, err = models.GetUserByID(r.PublisherID)
84-
if err != nil {
85-
if models.IsErrUserNotExist(err) {
86-
r.Publisher = models.NewGhostUser()
87-
} else {
88-
ctx.Handle(500, "GetUserByID", err)
89-
return
85+
if r.Publisher, ok = cacheUsers[r.PublisherID]; !ok {
86+
r.Publisher, err = models.GetUserByID(r.PublisherID)
87+
if err != nil {
88+
if models.IsErrUserNotExist(err) {
89+
r.Publisher = models.NewGhostUser()
90+
} else {
91+
ctx.Handle(500, "GetUserByID", err)
92+
return
93+
}
9094
}
95+
cacheUsers[r.PublisherID] = r.Publisher
9196
}
9297

9398
if err := calReleaseNumCommitsBehind(ctx.Repo, r, countCache); err != nil {
@@ -129,14 +134,17 @@ func Releases(ctx *context.Context) {
129134
continue
130135
}
131136

132-
r.Publisher, err = models.GetUserByID(r.PublisherID)
133-
if err != nil {
134-
if models.IsErrUserNotExist(err) {
135-
r.Publisher = models.NewGhostUser()
136-
} else {
137-
ctx.Handle(500, "GetUserByID", err)
138-
return
137+
if r.Publisher, ok = cacheUsers[r.PublisherID]; !ok {
138+
r.Publisher, err = models.GetUserByID(r.PublisherID)
139+
if err != nil {
140+
if models.IsErrUserNotExist(err) {
141+
r.Publisher = models.NewGhostUser()
142+
} else {
143+
ctx.Handle(500, "GetUserByID", err)
144+
return
145+
}
139146
}
147+
cacheUsers[r.PublisherID] = r.Publisher
140148
}
141149

142150
if err := calReleaseNumCommitsBehind(ctx.Repo, r, countCache); err != nil {

0 commit comments

Comments
 (0)