From c5ac659d1b3c6864b8970b6e32e391e9b2e6fc3b Mon Sep 17 00:00:00 2001 From: Giteabot Date: Sat, 16 Dec 2023 22:06:37 +0800 Subject: [PATCH] Initalize stroage for orphaned repository doctor (#28487) (#28490) Backport #28487 by @earl-warren - When a repository is orphaned and has objects stored in any of the storages such as repository avatar or attachments the delete function would error, because the storage module wasn't initalized. - Add code to initialize the storage module. Refs: https://codeberg.org/forgejo/forgejo/pulls/1954 Co-authored-by: Earl Warren <109468362+earl-warren@users.noreply.github.com> Co-authored-by: Gusted (cherry picked from commit 8ee1ed877b0207d9d8733ac32270325c54659909) --- modules/doctor/repository.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/doctor/repository.go b/modules/doctor/repository.go index 46c64f9f4b..7de018936a 100644 --- a/modules/doctor/repository.go +++ b/modules/doctor/repository.go @@ -9,6 +9,7 @@ import ( "code.gitea.io/gitea/models/db" user_model "code.gitea.io/gitea/models/user" "code.gitea.io/gitea/modules/log" + "code.gitea.io/gitea/modules/storage" repo_service "code.gitea.io/gitea/services/repository" "xorm.io/builder" @@ -31,6 +32,10 @@ func countOrphanedRepos(ctx context.Context) (int64, error) { // deleteOrphanedRepos delete repository where user of owner_id do not exist func deleteOrphanedRepos(ctx context.Context) (int64, error) { + if err := storage.Init(); err != nil { + return 0, err + } + batchSize := db.MaxBatchInsertSize("repository") e := db.GetEngine(ctx) var deleted int64