]> source.dussan.org Git - gitea.git/commitdiff
Add Num{Issues,Pulls} stats checks (#21404) (#21414)
authorGusted <williamzijl7@hotmail.com>
Wed, 12 Oct 2022 06:47:48 +0000 (06:47 +0000)
committerGitHub <noreply@github.com>
Wed, 12 Oct 2022 06:47:48 +0000 (14:47 +0800)
Backport #21404

Currently `repository.Num{Issues,Pulls}` weren't checked and could
become out-of-consistency. Adds these two checks to `CheckRepoStats`.

Fix incorrect SQL query for `repository.NumClosedPulls`, the check
should be for `repo_num_pulls`.

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
models/repo.go

index d2f3a45940f945cb629ef5c2314d79922c2dd91d..e304abf960b71103c071336172aa30981e8eac87 100644 (file)
@@ -605,15 +605,27 @@ func CheckRepoStats(ctx context.Context) error {
                        repoStatsCorrectNumStars,
                        "repository count 'num_stars'",
                },
+               // Repository.NumIssues
+               {
+                       statsQuery("SELECT repo.id FROM `repository` repo WHERE repo.num_issues!=(SELECT COUNT(*) FROM `issue` WHERE repo_id=repo.id AND is_closed=? AND is_pull=?)", false, false),
+                       repoStatsCorrectNumIssues,
+                       "repository count 'num_issues'",
+               },
                // Repository.NumClosedIssues
                {
                        statsQuery("SELECT repo.id FROM `repository` repo WHERE repo.num_closed_issues!=(SELECT COUNT(*) FROM `issue` WHERE repo_id=repo.id AND is_closed=? AND is_pull=?)", true, false),
                        repoStatsCorrectNumClosedIssues,
                        "repository count 'num_closed_issues'",
                },
+               // Repository.NumPulls
+               {
+                       statsQuery("SELECT repo.id FROM `repository` repo WHERE repo.num_pulls!=(SELECT COUNT(*) FROM `issue` WHERE repo_id=repo.id AND is_closed=? AND is_pull=?)", false, true),
+                       repoStatsCorrectNumPulls,
+                       "repository count 'num_pulls'",
+               },
                // Repository.NumClosedPulls
                {
-                       statsQuery("SELECT repo.id FROM `repository` repo WHERE repo.num_closed_issues!=(SELECT COUNT(*) FROM `issue` WHERE repo_id=repo.id AND is_closed=? AND is_pull=?)", true, true),
+                       statsQuery("SELECT repo.id FROM `repository` repo WHERE repo.num_closed_pulls!=(SELECT COUNT(*) FROM `issue` WHERE repo_id=repo.id AND is_closed=? AND is_pull=?)", true, true),
                        repoStatsCorrectNumClosedPulls,
                        "repository count 'num_closed_pulls'",
                },