From 2a797bd4d93c5343d277adb3153ae88cc5d10146 Mon Sep 17 00:00:00 2001 From: Guillermo Prandi Date: Sun, 4 Aug 2019 16:15:13 -0300 Subject: [PATCH 1/5] Add migration step to remove old repo_indexer_status orphaned records --- models/migrations/migrations.go | 2 ++ models/migrations/v91.go | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 models/migrations/v91.go diff --git a/models/migrations/migrations.go b/models/migrations/migrations.go index 5326022b41613..24801b912ae63 100644 --- a/models/migrations/migrations.go +++ b/models/migrations/migrations.go @@ -236,6 +236,8 @@ var migrations = []Migration{ NewMigration("add original author/url migration info to issues, comments, and repo ", addOriginalMigrationInfo), // v90 -> v91 NewMigration("change length of some repository columns", changeSomeColumnsLengthOfRepo), + // v91 -> v92 + NewMigration("remove orphaned repository index statuses", removeLingeringIndexStatus), } // Migrate database to current version diff --git a/models/migrations/v91.go b/models/migrations/v91.go new file mode 100644 index 0000000000000..88318a157c488 --- /dev/null +++ b/models/migrations/v91.go @@ -0,0 +1,32 @@ +// Copyright 2019 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package migrations + +import ( + "code.gitea.io/gitea/models" + + "github.com/go-xorm/xorm" +) + +func removeLingeringIndexStatus(x *xorm.Engine) error { + + var orphaned []*models.RepoIndexerStatus + + err := x. + Join("LEFT OUTER", "`repository`", "`repository`.id = `repo_indexer_status`.repo_id"). + Where("`repository`.id is null"). + Find(&orphaned) + if err != nil { + return err + } + + for _, o := range orphaned { + if _, err = x.Delete(o); err != nil { + return err + } + } + + return nil +} From 01779b663b6362c37639734aededab9a653fc68b Mon Sep 17 00:00:00 2001 From: Guillermo Prandi Date: Sun, 4 Aug 2019 20:45:17 -0300 Subject: [PATCH 2/5] Include RepoIndexerStatus struct definition in the migrate function --- models/migrations/v91.go | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/models/migrations/v91.go b/models/migrations/v91.go index 88318a157c488..bb70e19448b04 100644 --- a/models/migrations/v91.go +++ b/models/migrations/v91.go @@ -4,15 +4,17 @@ package migrations -import ( - "code.gitea.io/gitea/models" - - "github.com/go-xorm/xorm" -) +import "github.com/go-xorm/xorm" func removeLingeringIndexStatus(x *xorm.Engine) error { - var orphaned []*models.RepoIndexerStatus + type RepoIndexerStatus struct { + ID int64 `xorm:"pk autoincr"` + RepoID int64 `xorm:"INDEX"` + CommitSha string `xorm:"VARCHAR(40)"` + } + + var orphaned []*RepoIndexerStatus err := x. Join("LEFT OUTER", "`repository`", "`repository`.id = `repo_indexer_status`.repo_id"). From 988e475c005b16bf13a7e1666e02b80546a5d8d4 Mon Sep 17 00:00:00 2001 From: Guillermo Prandi Date: Sun, 4 Aug 2019 22:37:47 -0300 Subject: [PATCH 3/5] Change .Delete(o) into ID(o.ID).Delete(new(RepoIndexerStatus)) --- models/migrations/v91.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/migrations/v91.go b/models/migrations/v91.go index bb70e19448b04..29b5daed7a3f0 100644 --- a/models/migrations/v91.go +++ b/models/migrations/v91.go @@ -25,7 +25,7 @@ func removeLingeringIndexStatus(x *xorm.Engine) error { } for _, o := range orphaned { - if _, err = x.Delete(o); err != nil { + if _, err = x.ID(o.ID).Delete(new(RepoIndexerStatus)); err != nil { return err } } From d488962ca7fa78b166775251b8551341aeebeae5 Mon Sep 17 00:00:00 2001 From: Guillermo Prandi Date: Mon, 5 Aug 2019 11:56:33 -0300 Subject: [PATCH 4/5] Simplification of the delete procedure --- models/migrations/v91.go | 30 ++++++------------------------ 1 file changed, 6 insertions(+), 24 deletions(-) diff --git a/models/migrations/v91.go b/models/migrations/v91.go index 29b5daed7a3f0..090332f151f0d 100644 --- a/models/migrations/v91.go +++ b/models/migrations/v91.go @@ -4,31 +4,13 @@ package migrations -import "github.com/go-xorm/xorm" +import ( + "github.com/go-xorm/xorm" + "xorm.io/builder" +) func removeLingeringIndexStatus(x *xorm.Engine) error { - type RepoIndexerStatus struct { - ID int64 `xorm:"pk autoincr"` - RepoID int64 `xorm:"INDEX"` - CommitSha string `xorm:"VARCHAR(40)"` - } - - var orphaned []*RepoIndexerStatus - - err := x. - Join("LEFT OUTER", "`repository`", "`repository`.id = `repo_indexer_status`.repo_id"). - Where("`repository`.id is null"). - Find(&orphaned) - if err != nil { - return err - } - - for _, o := range orphaned { - if _, err = x.ID(o.ID).Delete(new(RepoIndexerStatus)); err != nil { - return err - } - } - - return nil + _, err := x.Exec(builder.Delete(builder.NotIn("`repo_id`", builder.Select("`id`").From("`repository`"))).From("`repo_indexer_status`")) + return err } From a3c426bc16b72280902c46958c014b29fffce012 Mon Sep 17 00:00:00 2001 From: Lauris BH Date: Mon, 5 Aug 2019 18:00:22 +0300 Subject: [PATCH 5/5] Rename v91.go to v92.go --- models/migrations/{v91.go => v92.go} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename models/migrations/{v91.go => v92.go} (100%) diff --git a/models/migrations/v91.go b/models/migrations/v92.go similarity index 100% rename from models/migrations/v91.go rename to models/migrations/v92.go