Skip to content

Commit cafd19c

Browse files
author
Gusted
authored
Replace sync.Map with normal maps (#18584)
* Replace `sync.Map` with normal maps - These maps aren't being used in any kind of concurrent read/write and thus don't need `sync.Map` and can instead use normal maps. - Special thanks to dachary. - Added in: #6290 * Remove unannounced feature
1 parent e2bbbc4 commit cafd19c

File tree

1 file changed

+20
-35
lines changed

1 file changed

+20
-35
lines changed

services/migrations/gitea_uploader.go

Lines changed: 20 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import (
1212
"os"
1313
"path/filepath"
1414
"strings"
15-
"sync"
1615
"time"
1716

1817
"code.gitea.io/gitea/models"
@@ -42,9 +41,9 @@ type GiteaLocalUploader struct {
4241
repoOwner string
4342
repoName string
4443
repo *repo_model.Repository
45-
labels sync.Map
46-
milestones sync.Map
47-
issues sync.Map
44+
labels map[string]*models.Label
45+
milestones map[string]int64
46+
issues map[int64]*models.Issue
4847
gitRepo *git.Repository
4948
prHeadCache map[string]struct{}
5049
userMap map[int64]int64 // external user id mapping to user id
@@ -59,6 +58,9 @@ func NewGiteaLocalUploader(ctx context.Context, doer *user_model.User, repoOwner
5958
doer: doer,
6059
repoOwner: repoOwner,
6160
repoName: repoName,
61+
labels: make(map[string]*models.Label),
62+
milestones: make(map[string]int64),
63+
issues: make(map[int64]*models.Issue),
6264
prHeadCache: make(map[string]struct{}),
6365
userMap: make(map[int64]int64),
6466
prCache: make(map[int64]*models.PullRequest),
@@ -201,7 +203,7 @@ func (g *GiteaLocalUploader) CreateMilestones(milestones ...*base.Milestone) err
201203
}
202204

203205
for _, ms := range mss {
204-
g.milestones.Store(ms.Name, ms.ID)
206+
g.milestones[ms.Name] = ms.ID
205207
}
206208
return nil
207209
}
@@ -223,7 +225,7 @@ func (g *GiteaLocalUploader) CreateLabels(labels ...*base.Label) error {
223225
return err
224226
}
225227
for _, lb := range lbs {
226-
g.labels.Store(lb.Name, lb)
228+
g.labels[lb.Name] = lb
227229
}
228230
return nil
229231
}
@@ -333,19 +335,13 @@ func (g *GiteaLocalUploader) CreateIssues(issues ...*base.Issue) error {
333335
for _, issue := range issues {
334336
var labels []*models.Label
335337
for _, label := range issue.Labels {
336-
lb, ok := g.labels.Load(label.Name)
338+
lb, ok := g.labels[label.Name]
337339
if ok {
338-
labels = append(labels, lb.(*models.Label))
340+
labels = append(labels, lb)
339341
}
340342
}
341343

342-
var milestoneID int64
343-
if issue.Milestone != "" {
344-
milestone, ok := g.milestones.Load(issue.Milestone)
345-
if ok {
346-
milestoneID = milestone.(int64)
347-
}
348-
}
344+
milestoneID := g.milestones[issue.Milestone]
349345

350346
if issue.Created.IsZero() {
351347
if issue.Closed != nil {
@@ -404,7 +400,7 @@ func (g *GiteaLocalUploader) CreateIssues(issues ...*base.Issue) error {
404400
}
405401

406402
for _, is := range iss {
407-
g.issues.Store(is.Index, is)
403+
g.issues[is.Index] = is
408404
}
409405
}
410406

@@ -416,16 +412,14 @@ func (g *GiteaLocalUploader) CreateComments(comments ...*base.Comment) error {
416412
cms := make([]*models.Comment, 0, len(comments))
417413
for _, comment := range comments {
418414
var issue *models.Issue
419-
issueInter, ok := g.issues.Load(comment.IssueIndex)
415+
issue, ok := g.issues[comment.IssueIndex]
420416
if !ok {
421417
var err error
422418
issue, err = models.GetIssueByIndex(g.repo.ID, comment.IssueIndex)
423419
if err != nil {
424420
return err
425421
}
426-
g.issues.Store(comment.IssueIndex, issue)
427-
} else {
428-
issue = issueInter.(*models.Issue)
422+
g.issues[comment.IssueIndex] = issue
429423
}
430424

431425
if comment.Created.IsZero() {
@@ -487,7 +481,7 @@ func (g *GiteaLocalUploader) CreatePullRequests(prs ...*base.PullRequest) error
487481
return err
488482
}
489483
for _, pr := range gprs {
490-
g.issues.Store(pr.Issue.Index, pr.Issue)
484+
g.issues[pr.Issue.Index] = pr.Issue
491485
pull.AddToTaskQueue(pr)
492486
}
493487
return nil
@@ -496,19 +490,13 @@ func (g *GiteaLocalUploader) CreatePullRequests(prs ...*base.PullRequest) error
496490
func (g *GiteaLocalUploader) newPullRequest(pr *base.PullRequest) (*models.PullRequest, error) {
497491
var labels []*models.Label
498492
for _, label := range pr.Labels {
499-
lb, ok := g.labels.Load(label.Name)
493+
lb, ok := g.labels[label.Name]
500494
if ok {
501-
labels = append(labels, lb.(*models.Label))
495+
labels = append(labels, lb)
502496
}
503497
}
504498

505-
var milestoneID int64
506-
if pr.Milestone != "" {
507-
milestone, ok := g.milestones.Load(pr.Milestone)
508-
if ok {
509-
milestoneID = milestone.(int64)
510-
}
511-
}
499+
milestoneID := g.milestones[pr.Milestone]
512500

513501
// download patch file
514502
err := func() error {
@@ -700,18 +688,15 @@ func (g *GiteaLocalUploader) CreateReviews(reviews ...*base.Review) error {
700688
cms := make([]*models.Review, 0, len(reviews))
701689
for _, review := range reviews {
702690
var issue *models.Issue
703-
issueInter, ok := g.issues.Load(review.IssueIndex)
691+
issue, ok := g.issues[review.IssueIndex]
704692
if !ok {
705693
var err error
706694
issue, err = models.GetIssueByIndex(g.repo.ID, review.IssueIndex)
707695
if err != nil {
708696
return err
709697
}
710-
g.issues.Store(review.IssueIndex, issue)
711-
} else {
712-
issue = issueInter.(*models.Issue)
698+
g.issues[review.IssueIndex] = issue
713699
}
714-
715700
if review.CreatedAt.IsZero() {
716701
review.CreatedAt = time.Unix(int64(issue.CreatedUnix), 0)
717702
}

0 commit comments

Comments
 (0)