summaryrefslogtreecommitdiffstats
path: root/models/org_team.go
diff options
context:
space:
mode:
authorEthan Koenig <ethantkoenig@gmail.com>2017-12-30 22:08:08 -0500
committerLunny Xiao <xiaolunwen@gmail.com>2017-12-30 21:08:08 -0600
commitc64924682e8871baed68fce64107fd16dbb835a7 (patch)
tree93bdbdf64f56d38f71b18343e8bc3db330170101 /models/org_team.go
parentedce41ae652b278aa938dd8b2208722f3ee6afb4 (diff)
downloadgitea-c64924682e8871baed68fce64107fd16dbb835a7.tar.gz
gitea-c64924682e8871baed68fce64107fd16dbb835a7.zip
Fix race condition in team functions (#3268)
Diffstat (limited to 'models/org_team.go')
-rw-r--r--models/org_team.go11
1 files changed, 6 insertions, 5 deletions
diff --git a/models/org_team.go b/models/org_team.go
index 1e3bc27071..c667cfb8e2 100644
--- a/models/org_team.go
+++ b/models/org_team.go
@@ -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)
}
@@ -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
}
@@ -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 {