aboutsummaryrefslogtreecommitdiffstats
path: root/modules/doctor/dbconsistency.go
diff options
context:
space:
mode:
authorzeripath <art27@cantab.net>2021-02-10 02:50:44 +0000
committerGitHub <noreply@github.com>2021-02-10 10:50:44 +0800
commitf82b1dd7c384e0295530f2ded53c0938f7b2fc9b (patch)
tree60308c77693db06d01cdb5915e3264625752fa60 /modules/doctor/dbconsistency.go
parent30f7ddb833adfe276a93c1a79e243b8d33bdd41e (diff)
downloadgitea-f82b1dd7c384e0295530f2ded53c0938f7b2fc9b.tar.gz
gitea-f82b1dd7c384e0295530f2ded53c0938f7b2fc9b.zip
Prevent adding nil label to .AddedLabels or .RemovedLabels (#14623)
* Prevent adding nil label to .AddedLabels or .RemovedLabels There are possibly a few old databases out there with malmigrated data that can cause panics with empty labels being migrated. This PR adds a few tests to prevent nil labels being added. Fix #14466 Signed-off-by: Andrew Thornton <art27@cantab.net> * Add doctor command to remove the broken label comments Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: 6543 <6543@obermui.de>
Diffstat (limited to 'modules/doctor/dbconsistency.go')
-rw-r--r--modules/doctor/dbconsistency.go18
1 files changed, 18 insertions, 0 deletions
diff --git a/modules/doctor/dbconsistency.go b/modules/doctor/dbconsistency.go
index f09aaa6d1b..942a45cb30 100644
--- a/modules/doctor/dbconsistency.go
+++ b/modules/doctor/dbconsistency.go
@@ -111,6 +111,24 @@ func checkDBConsistency(logger log.Logger, autofix bool) error {
}
}
+ // find label comments with empty labels
+ count, err = models.CountCommentTypeLabelWithEmptyLabel()
+ if err != nil {
+ logger.Critical("Error: %v whilst counting label comments with empty labels")
+ return err
+ }
+ if count > 0 {
+ if autofix {
+ updatedCount, err := models.FixCommentTypeLabelWithEmptyLabel()
+ if err != nil {
+ logger.Critical("Error: %v whilst removing label comments with empty labels")
+ return err
+ }
+ logger.Info("%d label comments with empty labels removed", updatedCount)
+ } else {
+ logger.Warn("%d label comments with empty labels", count)
+ }
+ }
// TODO: function to recalc all counters
return nil