mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-03 20:36:07 +01:00 
			
		
		
		
	fix potential lock when sqlite (#1647)
This commit is contained in:
		@@ -1058,29 +1058,30 @@ func (pr *PullRequest) checkAndUpdateStatus() {
 | 
			
		||||
// TODO: test more pull requests at same time.
 | 
			
		||||
func TestPullRequests() {
 | 
			
		||||
	prs := make([]*PullRequest, 0, 10)
 | 
			
		||||
	x.Iterate(PullRequest{
 | 
			
		||||
		Status: PullRequestStatusChecking,
 | 
			
		||||
	},
 | 
			
		||||
		func(idx int, bean interface{}) error {
 | 
			
		||||
			pr := bean.(*PullRequest)
 | 
			
		||||
 | 
			
		||||
			if err := pr.GetBaseRepo(); err != nil {
 | 
			
		||||
				log.Error(3, "GetBaseRepo: %v", err)
 | 
			
		||||
				return nil
 | 
			
		||||
	err := x.Where("status = ?", PullRequestStatusChecking).Find(&prs)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Error(3, "Find Checking PRs", err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
			if pr.manuallyMerged() {
 | 
			
		||||
				return nil
 | 
			
		||||
			}
 | 
			
		||||
			if err := pr.testPatch(); err != nil {
 | 
			
		||||
				log.Error(3, "testPatch: %v", err)
 | 
			
		||||
				return nil
 | 
			
		||||
			}
 | 
			
		||||
			prs = append(prs, pr)
 | 
			
		||||
			return nil
 | 
			
		||||
		})
 | 
			
		||||
 | 
			
		||||
	var checkedPRs = make(map[int64]struct{})
 | 
			
		||||
 | 
			
		||||
	// Update pull request status.
 | 
			
		||||
	for _, pr := range prs {
 | 
			
		||||
		checkedPRs[pr.ID] = struct{}{}
 | 
			
		||||
		if err := pr.GetBaseRepo(); err != nil {
 | 
			
		||||
			log.Error(3, "GetBaseRepo: %v", err)
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		if pr.manuallyMerged() {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		if err := pr.testPatch(); err != nil {
 | 
			
		||||
			log.Error(3, "testPatch: %v", err)
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		pr.checkAndUpdateStatus()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -1089,7 +1090,12 @@ func TestPullRequests() {
 | 
			
		||||
		log.Trace("TestPullRequests[%v]: processing test task", prID)
 | 
			
		||||
		pullRequestQueue.Remove(prID)
 | 
			
		||||
 | 
			
		||||
		pr, err := GetPullRequestByID(com.StrTo(prID).MustInt64())
 | 
			
		||||
		id := com.StrTo(prID).MustInt64()
 | 
			
		||||
		if _, ok := checkedPRs[id]; ok {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		pr, err := GetPullRequestByID(id)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Error(4, "GetPullRequestByID[%s]: %v", prID, err)
 | 
			
		||||
			continue
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user