aboutsummaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/doctor/repository.go35
1 files changed, 20 insertions, 15 deletions
diff --git a/modules/doctor/repository.go b/modules/doctor/repository.go
index aa3f064ddd..d69ba2048b 100644
--- a/modules/doctor/repository.go
+++ b/modules/doctor/repository.go
@@ -37,24 +37,29 @@ func deleteOrphanedRepos(ctx context.Context) (int64, error) {
adminUser := &user_model.User{IsAdmin: true}
for {
- var ids []int64
- if err := e.Table("`repository`").
- Join("LEFT", "`user`", "repository.owner_id=user.id").
- Where(builder.IsNull{"`user`.id"}).
- Select("`repository`.id").Limit(batchSize).Find(&ids); err != nil {
- return deleted, err
- }
+ select {
+ case <-ctx.Done():
+ return deleted, ctx.Err()
+ default:
+ var ids []int64
+ if err := e.Table("`repository`").
+ Join("LEFT", "`user`", "repository.owner_id=user.id").
+ Where(builder.IsNull{"`user`.id"}).
+ Select("`repository`.id").Limit(batchSize).Find(&ids); err != nil {
+ return deleted, err
+ }
- // if we don't get ids we have deleted them all
- if len(ids) == 0 {
- return deleted, nil
- }
+ // if we don't get ids we have deleted them all
+ if len(ids) == 0 {
+ return deleted, nil
+ }
- for _, id := range ids {
- if err := repo_service.DeleteRepositoryDirectly(ctx, adminUser, id, true); err != nil {
- return deleted, err
+ for _, id := range ids {
+ if err := repo_service.DeleteRepositoryDirectly(ctx, adminUser, id, true); err != nil {
+ return deleted, err
+ }
+ deleted++
}
- deleted++
}
}
}