From 9028a9084a42b52ecb1bb4bc43e3bea6f7daecb6 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Fri, 27 Dec 2019 16:59:32 +0800 Subject: [PATCH 1/2] Fix API migration wrong repository status --- models/repo.go | 6 ++++++ routers/api/v1/repo/repo.go | 30 +++++++++++++++++++++++++++--- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/models/repo.go b/models/repo.go index 2d31184d6d6f6..582df7613a480 100644 --- a/models/repo.go +++ b/models/repo.go @@ -1781,6 +1781,12 @@ func UpdateRepository(repo *Repository, visibilityChanged bool) (err error) { return sess.Commit() } +// UpdateRepositoryStatus updates a repository's status +func UpdateRepositoryStatus(repoID int64, status RepositoryStatus) error { + _, err := x.Exec("UPDATE repository SET status = ? WHERE id = ?", status, repoID) + return err +} + // UpdateRepositoryUpdatedTime updates a repository's updated time func UpdateRepositoryUpdatedTime(repoID int64, updateTime time.Time) error { _, err := x.Exec("UPDATE repository SET updated_unix = ? WHERE id = ?", updateTime.Unix(), repoID) diff --git a/routers/api/v1/repo/repo.go b/routers/api/v1/repo/repo.go index a4417107ee384..967814c9380ca 100644 --- a/routers/api/v1/repo/repo.go +++ b/routers/api/v1/repo/repo.go @@ -6,6 +6,8 @@ package repo import ( + "bytes" + "errors" "fmt" "net/http" "net/url" @@ -431,10 +433,32 @@ func Migrate(ctx *context.APIContext, form auth.MigrateRepoForm) { opts.Releases = false } - repo, err := migrations.MigrateRepository(ctx.User, ctxUser.Name, opts) - if err == nil { - notification.NotifyCreateRepository(ctx.User, ctxUser, repo) + var repo *models.Repository + defer func() { + if e := recover(); e != nil { + var buf bytes.Buffer + fmt.Fprintf(&buf, "Handler crashed with error: %v", log.Stack(2)) + + err = errors.New(buf.String()) + } + if err == nil { + repo.Status = models.RepositoryReady + if err := models.UpdateRepositoryStatus(repo.ID, repo.Status); err == nil { + notification.NotifyMigrateRepository(ctx.User, ctxUser, repo) + return + } + } + + if repo != nil { + if errDelete := models.DeleteRepository(ctx.User, ctxUser.ID, repo.ID); errDelete != nil { + log.Error("DeleteRepository: %v", errDelete) + } + } + }() + + repo, err = migrations.MigrateRepository(ctx.User, ctxUser.Name, opts) + if err == nil { log.Trace("Repository migrated: %s/%s", ctxUser.Name, form.RepoName) ctx.JSON(201, repo.APIFormat(models.AccessModeAdmin)) return From 96abacd275522025b318be7048f08ecab878d39b Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Fri, 27 Dec 2019 17:04:46 +0800 Subject: [PATCH 2/2] Force push for ci --- routers/api/v1/repo/repo.go | 1 - 1 file changed, 1 deletion(-) diff --git a/routers/api/v1/repo/repo.go b/routers/api/v1/repo/repo.go index 967814c9380ca..8edb53a61f8ea 100644 --- a/routers/api/v1/repo/repo.go +++ b/routers/api/v1/repo/repo.go @@ -438,7 +438,6 @@ func Migrate(ctx *context.APIContext, form auth.MigrateRepoForm) { if e := recover(); e != nil { var buf bytes.Buffer fmt.Fprintf(&buf, "Handler crashed with error: %v", log.Stack(2)) - err = errors.New(buf.String()) }