Cache users on list releases (#527)

This commit is contained in:
Lunny Xiao 2016-12-29 21:21:19 +08:00 committed by GitHub
parent 6f4ba6884c
commit 2d1a1fce93
1 changed files with 22 additions and 14 deletions

View File

@ -73,6 +73,8 @@ func Releases(ctx *context.Context) {
// Temproray cache commits count of used branches to speed up. // Temproray cache commits count of used branches to speed up.
countCache := make(map[string]int64) countCache := make(map[string]int64)
var cacheUsers = make(map[int64]*models.User)
var ok bool
tags := make([]*models.Release, len(rawTags)) tags := make([]*models.Release, len(rawTags))
for i, rawTag := range rawTags { for i, rawTag := range rawTags {
for j, r := range releases { for j, r := range releases {
@ -80,14 +82,17 @@ func Releases(ctx *context.Context) {
continue continue
} }
if r.TagName == rawTag { if r.TagName == rawTag {
r.Publisher, err = models.GetUserByID(r.PublisherID) if r.Publisher, ok = cacheUsers[r.PublisherID]; !ok {
if err != nil { r.Publisher, err = models.GetUserByID(r.PublisherID)
if models.IsErrUserNotExist(err) { if err != nil {
r.Publisher = models.NewGhostUser() if models.IsErrUserNotExist(err) {
} else { r.Publisher = models.NewGhostUser()
ctx.Handle(500, "GetUserByID", err) } else {
return ctx.Handle(500, "GetUserByID", err)
return
}
} }
cacheUsers[r.PublisherID] = r.Publisher
} }
if err := calReleaseNumCommitsBehind(ctx.Repo, r, countCache); err != nil { if err := calReleaseNumCommitsBehind(ctx.Repo, r, countCache); err != nil {
@ -129,14 +134,17 @@ func Releases(ctx *context.Context) {
continue continue
} }
r.Publisher, err = models.GetUserByID(r.PublisherID) if r.Publisher, ok = cacheUsers[r.PublisherID]; !ok {
if err != nil { r.Publisher, err = models.GetUserByID(r.PublisherID)
if models.IsErrUserNotExist(err) { if err != nil {
r.Publisher = models.NewGhostUser() if models.IsErrUserNotExist(err) {
} else { r.Publisher = models.NewGhostUser()
ctx.Handle(500, "GetUserByID", err) } else {
return ctx.Handle(500, "GetUserByID", err)
return
}
} }
cacheUsers[r.PublisherID] = r.Publisher
} }
if err := calReleaseNumCommitsBehind(ctx.Repo, r, countCache); err != nil { if err := calReleaseNumCommitsBehind(ctx.Repo, r, countCache); err != nil {