- Backport #21856 - It's possible that the `user_redirect` table contains a user id that no longer exists. - Delete a user redirect upon deleting the user. - Add a check for these dangling user redirects to check-db-consistency.tags/v1.18.0-rc1
@@ -89,6 +89,7 @@ func DeleteUser(ctx context.Context, u *user_model.User, purge bool) (err error) | |||
&user_model.UserBadge{UserID: u.ID}, | |||
&pull_model.AutoMerge{DoerID: u.ID}, | |||
&pull_model.ReviewState{UserID: u.ID}, | |||
&user_model.Redirect{RedirectUserID: u.ID}, | |||
); err != nil { | |||
return fmt.Errorf("deleteBeans: %w", err) | |||
} |
@@ -205,6 +205,9 @@ func checkDBConsistency(ctx context.Context, logger log.Logger, autofix bool) er | |||
// find stopwatches without existing issue | |||
genericOrphanCheck("Orphaned Stopwatches without existing Issue", | |||
"stopwatch", "issue", "stopwatch.issue_id=`issue`.id"), | |||
// find redirects without existing user. | |||
genericOrphanCheck("Orphaned Redirects without existing redirect user", | |||
"user_redirect", "user", "user_redirect.redirect_user_id=`user`.id"), | |||
) | |||
for _, c := range consistencyChecks { |