]> source.dussan.org Git - gitea.git/commitdiff
Fix sqlite lock (#5176)
authorLunny Xiao <xiaolunwen@gmail.com>
Thu, 25 Oct 2018 10:55:16 +0000 (18:55 +0800)
committerGitHub <noreply@github.com>
Thu, 25 Oct 2018 10:55:16 +0000 (18:55 +0800)
* fix sqlite lock

* fix sqlite lock on getUnitType

models/notification.go
models/org_team.go
models/repo.go

index 8c36c0c5c9442514db8a4eddc401dc9341a9c2b1..cda2916faeb1db725dfba6aded65962b8ac8cd4a 100644 (file)
@@ -123,10 +123,10 @@ func createOrUpdateIssueNotifications(e Engine, issue *Issue, notificationAuthor
 
        for _, watch := range watches {
                issue.Repo.Units = nil
-               if issue.IsPull && !issue.Repo.CheckUnitUser(watch.UserID, false, UnitTypePullRequests) {
+               if issue.IsPull && !issue.Repo.checkUnitUser(e, watch.UserID, false, UnitTypePullRequests) {
                        continue
                }
-               if !issue.IsPull && !issue.Repo.CheckUnitUser(watch.UserID, false, UnitTypeIssues) {
+               if !issue.IsPull && !issue.Repo.checkUnitUser(e, watch.UserID, false, UnitTypeIssues) {
                        continue
                }
 
index 3b37f936ff6d452c952024c650ce9f2a66d10cdb..505f11d39df5e70ae66f917a6148ff591205d111 100644 (file)
@@ -215,7 +215,11 @@ func (t *Team) RemoveRepository(repoID int64) error {
 
 // UnitEnabled returns if the team has the given unit type enabled
 func (t *Team) UnitEnabled(tp UnitType) bool {
-       if err := t.getUnits(x); err != nil {
+       return t.unitEnabled(x, tp)
+}
+
+func (t *Team) unitEnabled(e Engine, tp UnitType) bool {
+       if err := t.getUnits(e); err != nil {
                log.Warn("Error loading repository (ID: %d) units: %s", t.ID, err.Error())
        }
 
index 15b6156508c5d85b1f96b29780b8f93a40d72719..61e1e26ae7d04e642af71a4ca32e3ca1f2d90a07 100644 (file)
@@ -321,7 +321,11 @@ func (repo *Repository) getUnits(e Engine) (err error) {
 
 // CheckUnitUser check whether user could visit the unit of this repository
 func (repo *Repository) CheckUnitUser(userID int64, isAdmin bool, unitType UnitType) bool {
-       if err := repo.getUnitsByUserID(x, userID, isAdmin); err != nil {
+       return repo.checkUnitUser(x, userID, isAdmin, unitType)
+}
+
+func (repo *Repository) checkUnitUser(e Engine, userID int64, isAdmin bool, unitType UnitType) bool {
+       if err := repo.getUnitsByUserID(e, userID, isAdmin); err != nil {
                return false
        }
 
@@ -369,7 +373,7 @@ func (repo *Repository) getUnitsByUserID(e Engine, userID int64, isAdmin bool) (
        var newRepoUnits = make([]*RepoUnit, 0, len(repo.Units))
        for _, u := range repo.Units {
                for _, team := range teams {
-                       if team.UnitEnabled(u.Type) {
+                       if team.unitEnabled(e, u.Type) {
                                newRepoUnits = append(newRepoUnits, u)
                                break
                        }