* 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 functiontags/v1.18.0-dev
@@ -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 |
@@ -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) |