Skip to content

Commit c89d939

Browse files
committed
Fix test
1 parent 804022b commit c89d939

File tree

4 files changed

+227
-238
lines changed

4 files changed

+227
-238
lines changed

models/issues/comment.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1114,8 +1114,7 @@ func UpdateComment(ctx context.Context, c *Comment, contentVersion int, doer *us
11141114

11151115
// DeleteComment deletes the comment
11161116
func DeleteComment(ctx context.Context, comment *Comment) (*Comment, error) {
1117-
e := db.GetEngine(ctx)
1118-
if _, err := e.ID(comment.ID).NoAutoCondition().Delete(comment); err != nil {
1117+
if _, err := db.GetEngine(ctx).ID(comment.ID).NoAutoCondition().Delete(comment); err != nil {
11191118
return nil, err
11201119
}
11211120

@@ -1130,7 +1129,7 @@ func DeleteComment(ctx context.Context, comment *Comment) (*Comment, error) {
11301129
return nil, err
11311130
}
11321131
}
1133-
if _, err := e.Table("action").
1132+
if _, err := db.GetEngine(ctx).Table("action").
11341133
Where("comment_id = ?", comment.ID).
11351134
Update(map[string]any{
11361135
"is_deleted": true,

services/org/org.go

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -48,39 +48,40 @@ func deleteOrganization(ctx context.Context, org *org_model.Organization) error
4848

4949
// DeleteOrganization completely and permanently deletes everything of organization.
5050
func DeleteOrganization(ctx context.Context, org *org_model.Organization, purge bool) error {
51-
ctx, committer, err := db.TxContext(ctx)
52-
if err != nil {
53-
return err
54-
}
55-
defer committer.Close()
56-
51+
// The repositories deletion of the organization cannot be under a transaction,
52+
// because it cannot be rolled back because the content in disk will be deleted
53+
// in the DeleteOwnerRepositoriesDirectly function.
54+
// Even not all repositories deleted successfully, we still delete the organization again.
55+
// TODO: We should mark all the repositories as deleted and delete them in a background job.
5756
if purge {
5857
err := repo_service.DeleteOwnerRepositoriesDirectly(ctx, org.AsUser())
5958
if err != nil {
6059
return err
6160
}
6261
}
6362

64-
// Check ownership of repository.
65-
count, err := repo_model.CountRepositories(ctx, repo_model.CountRepositoryOptions{OwnerID: org.ID})
66-
if err != nil {
67-
return fmt.Errorf("GetRepositoryCount: %w", err)
68-
} else if count > 0 {
69-
return repo_model.ErrUserOwnRepos{UID: org.ID}
70-
}
71-
72-
// Check ownership of packages.
73-
if ownsPackages, err := packages_model.HasOwnerPackages(ctx, org.ID); err != nil {
74-
return fmt.Errorf("HasOwnerPackages: %w", err)
75-
} else if ownsPackages {
76-
return packages_model.ErrUserOwnPackages{UID: org.ID}
77-
}
63+
err := db.WithTx(ctx, func(ctx context.Context) error {
64+
// Check ownership of repository.
65+
count, err := repo_model.CountRepositories(ctx, repo_model.CountRepositoryOptions{OwnerID: org.ID})
66+
if err != nil {
67+
return fmt.Errorf("GetRepositoryCount: %w", err)
68+
} else if count > 0 {
69+
return repo_model.ErrUserOwnRepos{UID: org.ID}
70+
}
7871

79-
if err := deleteOrganization(ctx, org); err != nil {
80-
return fmt.Errorf("DeleteOrganization: %w", err)
81-
}
72+
// Check ownership of packages.
73+
if ownsPackages, err := packages_model.HasOwnerPackages(ctx, org.ID); err != nil {
74+
return fmt.Errorf("HasOwnerPackages: %w", err)
75+
} else if ownsPackages {
76+
return packages_model.ErrUserOwnPackages{UID: org.ID}
77+
}
8278

83-
if err := committer.Commit(); err != nil {
79+
if err := deleteOrganization(ctx, org); err != nil {
80+
return fmt.Errorf("DeleteOrganization: %w", err)
81+
}
82+
return nil
83+
})
84+
if err != nil {
8485
return err
8586
}
8687

0 commit comments

Comments
 (0)