Skip to content

Dont overwrite err with nil & rename PullCheckingFuncs to reflect there usage #19572

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion routers/private/hook_pre_receive.go
Original file line number Diff line number Diff line change
Expand Up @@ -343,7 +343,7 @@ func preReceiveBranch(ctx *preReceiveContext, oldCommitID, newCommitID, refFullN
}

// Check all status checks and reviews are ok
if err := pull_service.CheckPRReadyToMerge(ctx, pr, true); err != nil {
if err := pull_service.CheckPullBranchProtections(ctx, pr, true); err != nil {
if models.IsErrDisallowedToMerge(err) {
log.Warn("Forbidden: User %d is not allowed push to protected branch %s in %-v and pr #%d is not ready to be merged: %s", ctx.opts.UserID, branchName, repo, pr.Index, err.Error())
ctx.JSON(http.StatusForbidden, private.Response{
Expand Down
28 changes: 14 additions & 14 deletions services/pull/check.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,12 @@ import (
asymkey_service "code.gitea.io/gitea/services/asymkey"
)

// prQueue represents a queue to handle update pull request tests
var prQueue queue.UniqueQueue
// prPatchCheckerQueue represents a queue to handle update pull request tests
var prPatchCheckerQueue queue.UniqueQueue

var (
ErrIsClosed = errors.New("pull is cosed")
ErrUserNotAllowedToMerge = errors.New("user not allowed to merge")
ErrIsClosed = errors.New("pull is closed")
ErrUserNotAllowedToMerge = models.ErrDisallowedToMerge{}
ErrHasMerged = errors.New("has already been merged")
ErrIsWorkInProgress = errors.New("work in progress PRs cannot be merged")
ErrIsChecking = errors.New("cannot merge while conflict checking is in progress")
Expand All @@ -43,7 +43,7 @@ var (

// AddToTaskQueue adds itself to pull request test task queue.
func AddToTaskQueue(pr *models.PullRequest) {
err := prQueue.PushFunc(strconv.FormatInt(pr.ID, 10), func() error {
err := prPatchCheckerQueue.PushFunc(strconv.FormatInt(pr.ID, 10), func() error {
pr.Status = models.PullRequestStatusChecking
err := pr.UpdateColsIfNotMerged("status")
if err != nil {
Expand Down Expand Up @@ -93,13 +93,13 @@ func CheckPullMergable(ctx context.Context, doer *user_model.User, perm *models.
return ErrIsChecking
}

if err := CheckPRReadyToMerge(ctx, pr, false); err != nil {
if err := CheckPullBranchProtections(ctx, pr, false); err != nil {
if models.IsErrDisallowedToMerge(err) {
if force {
if isRepoAdmin, err := models.IsUserRepoAdmin(pr.BaseRepo, doer); err != nil {
return err
if isRepoAdmin, err2 := models.IsUserRepoAdmin(pr.BaseRepo, doer); err2 != nil {
return err2
} else if !isRepoAdmin {
return ErrUserNotAllowedToMerge
return err
}
}
} else {
Expand Down Expand Up @@ -144,7 +144,7 @@ func checkAndUpdateStatus(pr *models.PullRequest) {
}

// Make sure there is no waiting test to process before leaving the checking status.
has, err := prQueue.Has(strconv.FormatInt(pr.ID, 10))
has, err := prPatchCheckerQueue.Has(strconv.FormatInt(pr.ID, 10))
if err != nil {
log.Error("Unable to check if the queue is waiting to reprocess pr.ID %d. Error: %v", pr.ID, err)
}
Expand Down Expand Up @@ -293,7 +293,7 @@ func InitializePullRequests(ctx context.Context) {
case <-ctx.Done():
return
default:
if err := prQueue.PushFunc(strconv.FormatInt(prID, 10), func() error {
if err := prPatchCheckerQueue.PushFunc(strconv.FormatInt(prID, 10), func() error {
log.Trace("Adding PR ID: %d to the pull requests patch checking queue", prID)
return nil
}); err != nil {
Expand Down Expand Up @@ -358,13 +358,13 @@ func CheckPrsForBaseBranch(baseRepo *repo_model.Repository, baseBranchName strin

// Init runs the task queue to test all the checking status pull requests
func Init() error {
prQueue = queue.CreateUniqueQueue("pr_patch_checker", handle, "")
prPatchCheckerQueue = queue.CreateUniqueQueue("pr_patch_checker", handle, "")

if prQueue == nil {
if prPatchCheckerQueue == nil {
return fmt.Errorf("Unable to create pr_patch_checker Queue")
}

go graceful.GetManager().RunWithShutdownFns(prQueue.Run)
go graceful.GetManager().RunWithShutdownFns(prPatchCheckerQueue.Run)
go graceful.GetManager().RunWithShutdownContext(InitializePullRequests)
return nil
}
10 changes: 5 additions & 5 deletions services/pull/check_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ func TestPullRequest_AddToTaskQueue(t *testing.T) {
queueShutdown := []func(){}
queueTerminate := []func(){}

prQueue = q.(queue.UniqueQueue)
prPatchCheckerQueue = q.(queue.UniqueQueue)

pr := unittest.AssertExistsAndLoadBean(t, &models.PullRequest{ID: 2}).(*models.PullRequest)
AddToTaskQueue(pr)
Expand All @@ -51,11 +51,11 @@ func TestPullRequest_AddToTaskQueue(t *testing.T) {
return pr.Status == models.PullRequestStatusChecking
}, 1*time.Second, 100*time.Millisecond)

has, err := prQueue.Has(strconv.FormatInt(pr.ID, 10))
has, err := prPatchCheckerQueue.Has(strconv.FormatInt(pr.ID, 10))
assert.True(t, has)
assert.NoError(t, err)

prQueue.Run(func(shutdown func()) {
prPatchCheckerQueue.Run(func(shutdown func()) {
queueShutdown = append(queueShutdown, shutdown)
}, func(terminate func()) {
queueTerminate = append(queueTerminate, terminate)
Expand All @@ -68,7 +68,7 @@ func TestPullRequest_AddToTaskQueue(t *testing.T) {
assert.Fail(t, "Timeout: nothing was added to pullRequestQueue")
}

has, err = prQueue.Has(strconv.FormatInt(pr.ID, 10))
has, err = prPatchCheckerQueue.Has(strconv.FormatInt(pr.ID, 10))
assert.False(t, has)
assert.NoError(t, err)

Expand All @@ -82,5 +82,5 @@ func TestPullRequest_AddToTaskQueue(t *testing.T) {
callback()
}

prQueue = nil
prPatchCheckerQueue = nil
}
4 changes: 2 additions & 2 deletions services/pull/merge.go
Original file line number Diff line number Diff line change
Expand Up @@ -662,8 +662,8 @@ func IsUserAllowedToMerge(pr *models.PullRequest, p models.Permission, user *use
return false, nil
}

// CheckPRReadyToMerge checks whether the PR is ready to be merged (reviews and status checks)
func CheckPRReadyToMerge(ctx context.Context, pr *models.PullRequest, skipProtectedFilesCheck bool) (err error) {
// CheckPullBranchProtections checks whether the PR is ready to be merged (reviews and status checks)
func CheckPullBranchProtections(ctx context.Context, pr *models.PullRequest, skipProtectedFilesCheck bool) (err error) {
if err = pr.LoadBaseRepoCtx(ctx); err != nil {
return fmt.Errorf("LoadBaseRepo: %v", err)
}
Expand Down