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 <postmaster@gusted.xyz>
(cherry picked from commit 8ee1ed877b
)
This commit is contained in:
parent
6cc170011b
commit
c5ac659d1b
1 changed files with 5 additions and 0 deletions
|
@ -9,6 +9,7 @@ import (
|
||||||
"code.gitea.io/gitea/models/db"
|
"code.gitea.io/gitea/models/db"
|
||||||
user_model "code.gitea.io/gitea/models/user"
|
user_model "code.gitea.io/gitea/models/user"
|
||||||
"code.gitea.io/gitea/modules/log"
|
"code.gitea.io/gitea/modules/log"
|
||||||
|
"code.gitea.io/gitea/modules/storage"
|
||||||
repo_service "code.gitea.io/gitea/services/repository"
|
repo_service "code.gitea.io/gitea/services/repository"
|
||||||
|
|
||||||
"xorm.io/builder"
|
"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
|
// deleteOrphanedRepos delete repository where user of owner_id do not exist
|
||||||
func deleteOrphanedRepos(ctx context.Context) (int64, error) {
|
func deleteOrphanedRepos(ctx context.Context) (int64, error) {
|
||||||
|
if err := storage.Init(); err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
|
||||||
batchSize := db.MaxBatchInsertSize("repository")
|
batchSize := db.MaxBatchInsertSize("repository")
|
||||||
e := db.GetEngine(ctx)
|
e := db.GetEngine(ctx)
|
||||||
var deleted int64
|
var deleted int64
|
||||||
|
|
Loading…
Reference in a new issue