Skip to content

Commit

Permalink
Fix race condition in team functions (go-gitea#3268)
Browse files Browse the repository at this point in the history
  • Loading branch information
ethantkoenig authored and lunny committed Dec 31, 2017
1 parent edce41a commit c649246
Showing 1 changed file with 6 additions and 5 deletions.
11 changes: 6 additions & 5 deletions models/org_team.go
Original file line number Diff line number Diff line change
Expand Up @@ -102,11 +102,12 @@ func (t *Team) addRepository(e Engine, repo *Repository) (err error) {
return err
}

t.NumRepos++
if _, err = e.ID(t.ID).Cols("num_repos").Update(t); err != nil {
if _, err = e.Incr("num_repos").ID(t.ID).Update(new(Team)); err != nil {
return fmt.Errorf("update team: %v", err)
}

t.NumRepos++

if err = repo.recalculateTeamAccesses(e, 0); err != nil {
return fmt.Errorf("recalculateAccesses: %v", err)
}
Expand Down Expand Up @@ -488,8 +489,6 @@ func AddTeamMember(team *Team, userID int64) error {
}

// Get team and its repositories.
team.NumMembers++

if err := team.GetRepositories(); err != nil {
return err
}
Expand All @@ -506,10 +505,12 @@ func AddTeamMember(team *Team, userID int64) error {
TeamID: team.ID,
}); err != nil {
return err
} else if _, err := sess.ID(team.ID).Update(team); err != nil {
} else if _, err := sess.Incr("num_members").ID(team.ID).Update(new(Team)); err != nil {
return err
}

team.NumMembers++

// Give access to team repositories.
for _, repo := range team.Repos {
if err := repo.recalculateTeamAccesses(sess, 0); err != nil {
Expand Down

0 comments on commit c649246

Please sign in to comment.