mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-27 00:23:41 +09:00 
			
		
		
		
	Fix sqlite lock (#5176)
* fix sqlite lock * fix sqlite lock on getUnitType
This commit is contained in:
		| @@ -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 | ||||||
| 			} | 			} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user