Skip to content

Commit a1e210b

Browse files
committed
improvements
1 parent 2775a3b commit a1e210b

File tree

2 files changed

+21
-10
lines changed

2 files changed

+21
-10
lines changed

services/issue/issue.go

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -346,44 +346,52 @@ func deleteIssue(ctx context.Context, issue *issues_model.Issue, deleteAttachmen
346346

347347
// DeleteOrphanedIssues delete issues without a repo
348348
func DeleteOrphanedIssues(ctx context.Context) error {
349-
return db.WithTx(ctx, func(ctx context.Context) error {
349+
cleanup := util.NewCleanUpFunc()
350+
if err := db.WithTx(ctx, func(ctx context.Context) error {
350351
repoIDs, err := issues_model.GetOrphanedIssueRepoIDs(ctx)
351352
if err != nil {
352353
return err
353354
}
354355
for i := range repoIDs {
355-
if err := DeleteIssuesByRepoID(ctx, repoIDs[i], true); err != nil {
356+
deleteIssuesCleanup, err := DeleteIssuesByRepoID(ctx, repoIDs[i], true)
357+
if err != nil {
356358
return err
357359
}
360+
cleanup = cleanup.Append(deleteIssuesCleanup)
358361
}
359362
return nil
360-
})
363+
}); err != nil {
364+
return err
365+
}
366+
cleanup()
367+
return nil
361368
}
362369

363370
// DeleteIssuesByRepoID deletes issues by repositories id
364-
func DeleteIssuesByRepoID(ctx context.Context, repoID int64, deleteAttachments bool) error {
371+
func DeleteIssuesByRepoID(ctx context.Context, repoID int64, deleteAttachments bool) (util.CleanUpFunc, error) {
372+
cleanup := util.NewCleanUpFunc()
365373
for {
366374
issues := make([]*issues_model.Issue, 0, db.DefaultMaxInSize)
367375
if err := db.GetEngine(ctx).
368376
Where("repo_id = ?", repoID).
369377
OrderBy("id").
370378
Limit(db.DefaultMaxInSize).
371379
Find(&issues); err != nil {
372-
return err
380+
return nil, err
373381
}
374382

375383
if len(issues) == 0 {
376384
break
377385
}
378386

379387
for _, issue := range issues {
380-
cleanup, err := deleteIssue(ctx, issue, deleteAttachments)
388+
deleteIssueCleanUp, err := deleteIssue(ctx, issue, deleteAttachments)
381389
if err != nil {
382-
return fmt.Errorf("deleteIssue [issue_id: %d]: %w", issue.ID, err)
390+
return nil, fmt.Errorf("deleteIssue [issue_id: %d]: %w", issue.ID, err)
383391
}
384-
cleanup()
392+
cleanup = cleanup.Append(deleteIssueCleanUp)
385393
}
386394
}
387395

388-
return nil
396+
return cleanup, nil
389397
}

services/repository/delete.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,8 @@ func DeleteRepositoryDirectly(ctx context.Context, doer *user_model.User, repoID
201201

202202
// Delete Issues and related objects
203203
// attachments will be deleted later with repo_id
204-
if err = issue_service.DeleteIssuesByRepoID(ctx, repoID, false); err != nil {
204+
cleanup, err := issue_service.DeleteIssuesByRepoID(ctx, repoID, false)
205+
if err != nil {
205206
return err
206207
}
207208

@@ -297,6 +298,8 @@ func DeleteRepositoryDirectly(ctx context.Context, doer *user_model.User, repoID
297298

298299
committer.Close()
299300

301+
cleanup()
302+
300303
if needRewriteKeysFile {
301304
if err := asymkey_service.RewriteAllPublicKeys(ctx); err != nil {
302305
log.Error("RewriteAllPublicKeys failed: %v", err)

0 commit comments

Comments
 (0)