Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Delete only HookTasks of the repository #17981

Closed
wants to merge 1 commit into from

Conversation

KN4CK3R
Copy link
Member

@KN4CK3R KN4CK3R commented Dec 14, 2021

Extracted from #17940.

The old code deletes every HookTask associated with the repo but that's wrong because it deletes tasks from system and organziation webhooks too.

Generally I think it's better to delegate the management of dependencies to the correct struct (WebHook in this case) which knows what to delete instead of trying to do this "extern" with DeleteBeans.

@@ -766,7 +766,6 @@ func DeleteRepository(doer *user_model.User, uid, repoID int64) error {
&Comment{RefRepoID: repoID},
&CommitStatus{RepoID: repoID},
&DeletedBranch{RepoID: repoID},
&webhook.HookTask{RepoID: repoID},
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But a HookTask belongs to this repository which produced because of an org webhook should also be deleted? Otherwise we will have dirty records?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A HookTask belongs to a Webhook. If a system or organization webhook generates a HookTask I would be surprised if this history entry of the webhook gets deleted just because the repository was deleted. The entry should only be deleted if the system/org webhook gets deleted.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The hook_task should belong to webhook but also repository. That means, deleting webhook will delete all webhook generated hook tasks. Deleting repository will delete all hook tasks for the repository.

For an individual repository, a webhook will generate hooktask for only one repository. So there is no problem whatever delete repository or delete webhook, we could delete all hooktask according webhook id. But for organization repository, the webhook maybe created and stay a long time(maybe forever? :)). But some repositories created and some repositories deleted. (btw: a possible bug maybe when create a new repository, the system webhook and organization webhook didn't apply into them, I have to check.) So maybe you have never chance to delete all these hook tasks.

Copy link
Member Author

@KN4CK3R KN4CK3R Dec 15, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The hook_task should belong to webhook but also repository. That means, deleting webhook will delete all webhook generated hook tasks. Deleting repository will delete all hook tasks for the repository.

Same is true for an issue comment but you do not delete the comment just because you delete the user. The comment is related to the issue like the hooktask to the webhook. The history entry of a webhook should not get deleted just because an unused reference is deleted. You don't remove the system notices of a repository just because the repository isn't there anymore.

But for organization repository, the webhook maybe created and stay a long time(maybe forever? :)).

Webhooks could stay a long time. The hook tasks of a webhook live up to 7 days. There is a cronjob which deletes them.

@GiteaBot GiteaBot added the lgtm/need 2 This PR needs two approvals by maintainers to be considered for merging. label Dec 14, 2021
@stale
Copy link

stale bot commented Apr 29, 2022

This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs during the next 2 months. Thank you for your contributions.

@KN4CK3R
Copy link
Member Author

KN4CK3R commented Apr 29, 2022

go away bot

@lunny lunny added the issue/confirmed Issue has been reviewed and confirmed to be present or accepted to be implemented label May 8, 2022
@lunny
Copy link
Member

lunny commented Jun 5, 2022

I still think add a target_id and task_type is a better resolution. That will make deletion easier at least.

@lunny
Copy link
Member

lunny commented Nov 29, 2022

Since #17940 merged, I think maybe this could be closed?

@wxiaoguang
Copy link
Contributor

ping ~~~

@wxiaoguang wxiaoguang added the issue/needs-feedback For bugs, we need more details. For features, the feature must be described in more detail label May 1, 2023
@wxiaoguang
Copy link
Contributor

second ping ~~~

@KN4CK3R KN4CK3R closed this May 10, 2023
@go-gitea go-gitea locked as resolved and limited conversation to collaborators Aug 8, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
issue/confirmed Issue has been reviewed and confirmed to be present or accepted to be implemented issue/needs-feedback For bugs, we need more details. For features, the feature must be described in more detail lgtm/need 2 This PR needs two approvals by maintainers to be considered for merging. type/bug
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants