mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 20:21:47 +01:00 
			
		
		
		
	fix potential lock when sqlite (#1647)
This commit is contained in:
		
							parent
							
								
									b6206e4788
								
							
						
					
					
						commit
						0f3923c4d7
					
				| @ -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 | ||||
| 			} | ||||
| 			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 | ||||
| 		}) | ||||
| 	err := x.Where("status = ?", PullRequestStatusChecking).Find(&prs) | ||||
| 	if err != nil { | ||||
| 		log.Error(3, "Find Checking PRs", err) | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	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 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user