mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	Add context parameter to some database functions (#26055)
To avoid deadlock problem, almost database related functions should be have ctx as the first parameter. This PR do a refactor for some of these functions.
This commit is contained in:
		@@ -265,7 +265,7 @@ func AddTestPullRequestTask(doer *user_model.User, repoID int64, branch string,
 | 
			
		||||
		// TODO: graceful: AddTestPullRequestTask needs to become a queue!
 | 
			
		||||
 | 
			
		||||
		// GetUnmergedPullRequestsByHeadInfo() only return open and unmerged PR.
 | 
			
		||||
		prs, err := issues_model.GetUnmergedPullRequestsByHeadInfo(repoID, branch)
 | 
			
		||||
		prs, err := issues_model.GetUnmergedPullRequestsByHeadInfo(ctx, repoID, branch)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Error("Find pull requests [head_repo_id: %d, head_branch: %s]: %v", repoID, branch, err)
 | 
			
		||||
			return
 | 
			
		||||
@@ -282,7 +282,7 @@ func AddTestPullRequestTask(doer *user_model.User, repoID int64, branch string,
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			AddToTaskQueue(pr)
 | 
			
		||||
			AddToTaskQueue(ctx, pr)
 | 
			
		||||
			comment, err := CreatePushPullComment(ctx, doer, pr, oldCommitID, newCommitID)
 | 
			
		||||
			if err == nil && comment != nil {
 | 
			
		||||
				notification.NotifyPullRequestPushCommits(ctx, doer, pr, comment)
 | 
			
		||||
@@ -291,7 +291,7 @@ func AddTestPullRequestTask(doer *user_model.User, repoID int64, branch string,
 | 
			
		||||
 | 
			
		||||
		if isSync {
 | 
			
		||||
			requests := issues_model.PullRequestList(prs)
 | 
			
		||||
			if err = requests.LoadAttributes(); err != nil {
 | 
			
		||||
			if err = requests.LoadAttributes(ctx); err != nil {
 | 
			
		||||
				log.Error("PullRequestList.LoadAttributes: %v", err)
 | 
			
		||||
			}
 | 
			
		||||
			if invalidationErr := checkForInvalidation(ctx, requests, repoID, doer, branch); invalidationErr != nil {
 | 
			
		||||
@@ -341,7 +341,7 @@ func AddTestPullRequestTask(doer *user_model.User, repoID int64, branch string,
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		log.Trace("AddTestPullRequestTask [base_repo_id: %d, base_branch: %s]: finding pull requests", repoID, branch)
 | 
			
		||||
		prs, err = issues_model.GetUnmergedPullRequestsByBaseInfo(repoID, branch)
 | 
			
		||||
		prs, err = issues_model.GetUnmergedPullRequestsByBaseInfo(ctx, repoID, branch)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Error("Find pull requests [base_repo_id: %d, base_branch: %s]: %v", repoID, branch, err)
 | 
			
		||||
			return
 | 
			
		||||
@@ -360,7 +360,7 @@ func AddTestPullRequestTask(doer *user_model.User, repoID int64, branch string,
 | 
			
		||||
					log.Error("UpdateCommitDivergence: %v", err)
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			AddToTaskQueue(pr)
 | 
			
		||||
			AddToTaskQueue(ctx, pr)
 | 
			
		||||
		}
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
@@ -514,25 +514,25 @@ func (errs errlist) Error() string {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// CloseBranchPulls close all the pull requests who's head branch is the branch
 | 
			
		||||
func CloseBranchPulls(doer *user_model.User, repoID int64, branch string) error {
 | 
			
		||||
	prs, err := issues_model.GetUnmergedPullRequestsByHeadInfo(repoID, branch)
 | 
			
		||||
func CloseBranchPulls(ctx context.Context, doer *user_model.User, repoID int64, branch string) error {
 | 
			
		||||
	prs, err := issues_model.GetUnmergedPullRequestsByHeadInfo(ctx, repoID, branch)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	prs2, err := issues_model.GetUnmergedPullRequestsByBaseInfo(repoID, branch)
 | 
			
		||||
	prs2, err := issues_model.GetUnmergedPullRequestsByBaseInfo(ctx, repoID, branch)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	prs = append(prs, prs2...)
 | 
			
		||||
	if err := issues_model.PullRequestList(prs).LoadAttributes(); err != nil {
 | 
			
		||||
	if err := issues_model.PullRequestList(prs).LoadAttributes(ctx); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var errs errlist
 | 
			
		||||
	for _, pr := range prs {
 | 
			
		||||
		if err = issue_service.ChangeStatus(pr.Issue, doer, "", true); err != nil && !issues_model.IsErrPullWasClosed(err) && !issues_model.IsErrDependenciesLeft(err) {
 | 
			
		||||
		if err = issue_service.ChangeStatus(ctx, pr.Issue, doer, "", true); err != nil && !issues_model.IsErrPullWasClosed(err) && !issues_model.IsErrDependenciesLeft(err) {
 | 
			
		||||
			errs = append(errs, err)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
@@ -551,12 +551,12 @@ func CloseRepoBranchesPulls(ctx context.Context, doer *user_model.User, repo *re
 | 
			
		||||
 | 
			
		||||
	var errs errlist
 | 
			
		||||
	for _, branch := range branches {
 | 
			
		||||
		prs, err := issues_model.GetUnmergedPullRequestsByHeadInfo(repo.ID, branch.Name)
 | 
			
		||||
		prs, err := issues_model.GetUnmergedPullRequestsByHeadInfo(ctx, repo.ID, branch.Name)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if err = issues_model.PullRequestList(prs).LoadAttributes(); err != nil {
 | 
			
		||||
		if err = issues_model.PullRequestList(prs).LoadAttributes(ctx); err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
@@ -566,7 +566,7 @@ func CloseRepoBranchesPulls(ctx context.Context, doer *user_model.User, repo *re
 | 
			
		||||
			if pr.BaseRepoID == repo.ID {
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
			if err = issue_service.ChangeStatus(pr.Issue, doer, "", true); err != nil && !issues_model.IsErrPullWasClosed(err) {
 | 
			
		||||
			if err = issue_service.ChangeStatus(ctx, pr.Issue, doer, "", true); err != nil && !issues_model.IsErrPullWasClosed(err) {
 | 
			
		||||
				errs = append(errs, err)
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user