diff options
author | zeripath <art27@cantab.net> | 2021-02-10 02:50:44 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-10 10:50:44 +0800 |
commit | f82b1dd7c384e0295530f2ded53c0938f7b2fc9b (patch) | |
tree | 60308c77693db06d01cdb5915e3264625752fa60 /modules/doctor/dbconsistency.go | |
parent | 30f7ddb833adfe276a93c1a79e243b8d33bdd41e (diff) | |
download | gitea-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.go | 18 |
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 |