summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGusted <williamzijl7@hotmail.com>2022-05-04 10:09:42 +0000
committerGitHub <noreply@github.com>2022-05-04 12:09:42 +0200
commit3114cd30b817692556306ce6261ace2b58c54b76 (patch)
treec26e7e748a795197c76ca93eee0013584d4f4096
parent9c04da37d0bcb51ef0c20baeeea48c48eda99ff0 (diff)
downloadgitea-3114cd30b817692556306ce6261ace2b58c54b76.tar.gz
gitea-3114cd30b817692556306ce6261ace2b58c54b76.zip
Only check for non-finished migrating task (#19601)
* Only check for non-finished migrating task - Only check if a non-finished migrating task exists for a mirror before fetching the mirror details from the database. - Resolves #19600 - Regression: #19588 * Clarify function
-rw-r--r--models/task.go12
-rw-r--r--modules/context/repo.go10
2 files changed, 11 insertions, 11 deletions
diff --git a/models/task.go b/models/task.go
index 0720d28610..5528573ca5 100644
--- a/models/task.go
+++ b/models/task.go
@@ -181,12 +181,12 @@ func GetMigratingTask(repoID int64) (*Task, error) {
return &task, nil
}
-// HasMigratingTask returns if migrating task exist for repo.
-func HasMigratingTask(repoID int64) (bool, error) {
- return db.GetEngine(db.DefaultContext).Exist(&Task{
- RepoID: repoID,
- Type: structs.TaskTypeMigrateRepo,
- })
+// HasFinishedMigratingTask returns if a finished migration task exists for the repo.
+func HasFinishedMigratingTask(repoID int64) (bool, error) {
+ return db.GetEngine(db.DefaultContext).
+ Where("repo_id=? AND type=? AND status=?", repoID, structs.TaskTypeMigrateRepo, structs.TaskStatusFinished).
+ Table("task").
+ Exist()
}
// GetMigratingTaskByID returns the migrating task by repo's id
diff --git a/modules/context/repo.go b/modules/context/repo.go
index c5e3a69e5c..4a1e9aa9e8 100644
--- a/modules/context/repo.go
+++ b/modules/context/repo.go
@@ -371,14 +371,14 @@ func repoAssignment(ctx *Context, repo *repo_model.Repository) {
if repo.IsMirror {
- // Check if there's a migrating task.
- // If it does exist, don't fetch the Mirror from the database as it doesn't exist yet.
- hasTask, err := models.HasMigratingTask(repo.ID)
+ // Check if the mirror has finsihed migrationg, only then we can
+ // lookup the mirror informtation the database.
+ finishedMigrating, err := models.HasFinishedMigratingTask(repo.ID)
if err != nil {
- ctx.ServerError("GetMirrorByRepoID", err)
+ ctx.ServerError("HasFinishedMigratingTask", err)
return
}
- if !hasTask {
+ if finishedMigrating {
ctx.Repo.Mirror, err = repo_model.GetMirrorByRepoID(repo.ID)
if err != nil {
ctx.ServerError("GetMirrorByRepoID", err)