Move all push update operations to a queue (#10133)

* Fix test

* Add no queue for test only

* improve code

* Auto watch whatever branch operation

* Fix lint

* Rename noqueue to immediate

* Remove old PushUpdate function

* Fix tests

Co-authored-by: zeripath <art27@cantab.net>
Co-authored-by: techknowlogick <techknowlogick@gitea.io>
This commit is contained in:
Lunny Xiao 2020-09-11 22:14:48 +08:00 committed by GitHub
parent 910947fbcd
commit dd1a651b58
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 552 additions and 585 deletions

View file

@ -14,9 +14,9 @@ import (
"code.gitea.io/gitea/modules/convert"
"code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/repofiles"
repo_module "code.gitea.io/gitea/modules/repository"
api "code.gitea.io/gitea/modules/structs"
repo_service "code.gitea.io/gitea/services/repository"
)
// GetBranch get a branch of a repository
@ -160,10 +160,8 @@ func DeleteBranch(ctx *context.APIContext) {
}
// Don't return error below this
if err := repofiles.PushUpdate(
ctx.Repo.Repository,
ctx.Repo.BranchName,
repofiles.PushUpdateOptions{
if err := repo_service.PushUpdate(
&repo_service.PushUpdateOptions{
RefFullName: git.BranchPrefix + ctx.Repo.BranchName,
OldCommitID: c.ID.String(),
NewCommitID: git.EmptySHA,

View file

@ -35,6 +35,7 @@ import (
"code.gitea.io/gitea/services/mailer"
mirror_service "code.gitea.io/gitea/services/mirror"
pull_service "code.gitea.io/gitea/services/pull"
"code.gitea.io/gitea/services/repository"
"gitea.com/macaron/i18n"
"gitea.com/macaron/macaron"
@ -58,6 +59,9 @@ func NewServices() {
if err := storage.Init(); err != nil {
log.Fatal("storage init failed: %v", err)
}
if err := repository.NewContext(); err != nil {
log.Fatal("repository init failed: %v", err)
}
mailer.NewContext()
_ = cache.NewContext()
notification.NewContext()

View file

@ -18,10 +18,10 @@ import (
"code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/private"
"code.gitea.io/gitea/modules/repofiles"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/util"
pull_service "code.gitea.io/gitea/services/pull"
repo_service "code.gitea.io/gitea/services/repository"
"gitea.com/macaron/macaron"
"github.com/go-git/go-git/v5/plumbing"
@ -376,7 +376,7 @@ func HookPostReceive(ctx *macaron.Context, opts private.HookOptions) {
repoName := ctx.Params(":repo")
var repo *models.Repository
updates := make([]*repofiles.PushUpdateOptions, 0, len(opts.OldCommitIDs))
updates := make([]*repo_service.PushUpdateOptions, 0, len(opts.OldCommitIDs))
wasEmpty := false
for i := range opts.OldCommitIDs {
@ -403,7 +403,7 @@ func HookPostReceive(ctx *macaron.Context, opts private.HookOptions) {
wasEmpty = repo.IsEmpty
}
option := repofiles.PushUpdateOptions{
option := repo_service.PushUpdateOptions{
RefFullName: refFullName,
OldCommitID: opts.OldCommitIDs[i],
NewCommitID: opts.NewCommitIDs[i],
@ -422,7 +422,7 @@ func HookPostReceive(ctx *macaron.Context, opts private.HookOptions) {
}
if repo != nil && len(updates) > 0 {
if err := repofiles.PushUpdates(repo, updates); err != nil {
if err := repo_service.PushUpdates(updates); err != nil {
log.Error("Failed to Update: %s/%s Total Updates: %d", ownerName, repoName, len(updates))
for i, update := range updates {
log.Error("Failed to Update: %s/%s Update: %d/%d: Branch: %s", ownerName, repoName, i, len(updates), update.BranchName())

View file

@ -19,6 +19,7 @@ import (
repo_module "code.gitea.io/gitea/modules/repository"
"code.gitea.io/gitea/modules/util"
"code.gitea.io/gitea/routers/utils"
repo_service "code.gitea.io/gitea/services/repository"
)
const (
@ -118,10 +119,8 @@ func RestoreBranchPost(ctx *context.Context) {
}
// Don't return error below this
if err := repofiles.PushUpdate(
ctx.Repo.Repository,
deletedBranch.Name,
repofiles.PushUpdateOptions{
if err := repo_service.PushUpdate(
&repo_service.PushUpdateOptions{
RefFullName: git.BranchPrefix + deletedBranch.Name,
OldCommitID: git.EmptySHA,
NewCommitID: deletedBranch.Commit,
@ -157,10 +156,8 @@ func deleteBranch(ctx *context.Context, branchName string) error {
}
// Don't return error below this
if err := repofiles.PushUpdate(
ctx.Repo.Repository,
branchName,
repofiles.PushUpdateOptions{
if err := repo_service.PushUpdate(
&repo_service.PushUpdateOptions{
RefFullName: git.BranchPrefix + branchName,
OldCommitID: commit.ID.String(),
NewCommitID: git.EmptySHA,

View file

@ -22,7 +22,6 @@ import (
"code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/notification"
"code.gitea.io/gitea/modules/repofiles"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/modules/util"
@ -1124,10 +1123,8 @@ func CleanUpPullRequest(ctx *context.Context) {
return
}
if err := repofiles.PushUpdate(
pr.HeadRepo,
pr.HeadBranch,
repofiles.PushUpdateOptions{
if err := repo_service.PushUpdate(
&repo_service.PushUpdateOptions{
RefFullName: git.BranchPrefix + pr.HeadBranch,
OldCommitID: branchCommitID,
NewCommitID: git.EmptySHA,