mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-11-24 15:12:42 +01:00
Fix sqlite lock (#5176)
* fix sqlite lock * fix sqlite lock on getUnitType
This commit is contained in:
parent
554581f848
commit
5f938c0c78
3 changed files with 13 additions and 5 deletions
|
@ -123,10 +123,10 @@ func createOrUpdateIssueNotifications(e Engine, issue *Issue, notificationAuthor
|
||||||
|
|
||||||
for _, watch := range watches {
|
for _, watch := range watches {
|
||||||
issue.Repo.Units = nil
|
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
|
continue
|
||||||
}
|
}
|
||||||
if !issue.IsPull && !issue.Repo.CheckUnitUser(watch.UserID, false, UnitTypeIssues) {
|
if !issue.IsPull && !issue.Repo.checkUnitUser(e, watch.UserID, false, UnitTypeIssues) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -215,7 +215,11 @@ func (t *Team) RemoveRepository(repoID int64) error {
|
||||||
|
|
||||||
// UnitEnabled returns if the team has the given unit type enabled
|
// UnitEnabled returns if the team has the given unit type enabled
|
||||||
func (t *Team) UnitEnabled(tp UnitType) bool {
|
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())
|
log.Warn("Error loading repository (ID: %d) units: %s", t.ID, err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -321,7 +321,11 @@ func (repo *Repository) getUnits(e Engine) (err error) {
|
||||||
|
|
||||||
// CheckUnitUser check whether user could visit the unit of this repository
|
// CheckUnitUser check whether user could visit the unit of this repository
|
||||||
func (repo *Repository) CheckUnitUser(userID int64, isAdmin bool, unitType UnitType) bool {
|
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
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -369,7 +373,7 @@ func (repo *Repository) getUnitsByUserID(e Engine, userID int64, isAdmin bool) (
|
||||||
var newRepoUnits = make([]*RepoUnit, 0, len(repo.Units))
|
var newRepoUnits = make([]*RepoUnit, 0, len(repo.Units))
|
||||||
for _, u := range repo.Units {
|
for _, u := range repo.Units {
|
||||||
for _, team := range teams {
|
for _, team := range teams {
|
||||||
if team.UnitEnabled(u.Type) {
|
if team.unitEnabled(e, u.Type) {
|
||||||
newRepoUnits = append(newRepoUnits, u)
|
newRepoUnits = append(newRepoUnits, u)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue