forgejo/services
Earl Warren ce96379aef
[ACTIONS] skip superflous pull request synchronized event (#2314)
Skip a HookEventPullRequestSync event if it has the same CommitSHA as an existing HookEventPullRequest event in the ActionRun table. A HookEventPullRequestSync event must only create an ActionRun if the CommitSHA is different from what it was when the PR was open.

This guards against a race that can happen when the following is done in parallel:

* A commit C is pushed to a repo on branch B
* A pull request with head on branch B

it is then possible that the pull request is created first, successfully. The commit that was just pushed is not known yet but the PR only references the repository and the B branch so it is fine.

A HookEventPullRequest event is sent to the notification queue but not processed immediately.

The commit C is pushed and processed successfully. Since the PR already exists and has a head that matches the branch, the head of the PR is updated with the commit C and a HookEventPullRequestSync event is sent to the notification queue.

The HookEventPullRequest event is processed and since the head of the PR was updated to be commit C, an ActionRun with CommitSHA C is created.

The HookEventPullRequestSync event is then processed and also has a CommitSHA equal to C.

Refs: https://codeberg.org/forgejo/forgejo/issues/2009
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/2314
Co-authored-by: Earl Warren <contact@earl-warren.org>
Co-committed-by: Earl Warren <contact@earl-warren.org>
(cherry picked from commit 7b4dba3aa0)

Conflicts:
	services/actions/notifier_helper.go
	tests/integration/actions_trigger_test.go
	trivial context conficts
	services/actions/main_test.go is different in v1.21
2024-02-13 12:00:27 +01:00
..
actions [ACTIONS] skip superflous pull request synchronized event (#2314) 2024-02-13 12:00:27 +01:00
agit Move notification interface to services layer (#26915) 2023-09-05 18:37:47 +00:00
asymkey Another round of db.DefaultContext refactor (#27103) (#27262) 2023-09-25 19:24:35 +02:00
attachment [FEAT] allow setting the update date on issues and comments 2023-11-13 12:33:49 +01:00
auth [GITEA] rework long-term authentication 2024-01-16 14:14:46 +00:00
automerge Improve queue and logger context (#24924) 2023-05-26 07:31:55 +00:00
context Another round of db.DefaultContext refactor (#27103) (#27262) 2023-09-25 19:24:35 +02:00
convert Fix convert.ToTeams on empty input (#28426) (#28767) 2024-01-16 14:39:23 +00:00
cron [GITEA] Actually recover from a panic in cron task 2023-12-10 17:20:49 +01:00
externalaccount More db.DefaultContext refactor (#27265) (#27347) 2023-09-29 13:35:01 +00:00
feed More db.DefaultContext refactor (#27265) (#27347) 2023-09-29 13:35:01 +00:00
forgejo [UPGRADE] add sanity checks for [storage*] 2023-11-13 12:33:49 +01:00
forms [GITEA] Fix required error for token name 2023-11-13 14:06:32 +01:00
gitdiff Add option to disable ambiguous unicode characters detection (#28454) (#28499) 2023-12-22 12:07:01 +01:00
indexer Fix missing issue search index update when changing status (#28325) (#28330) 2023-12-08 13:41:16 +01:00
issue [MODERATION] User blocking 2023-11-13 13:58:02 +01:00
lfs [GITEA] Drop sha256-simd in favor of stdlib 2023-11-13 14:06:31 +01:00
mailer Rework markup link rendering (#26745) (#28803) 2024-01-16 14:41:11 +00:00
markup Move web/api context related testing function into a separate package (#26859) 2023-09-01 11:26:07 +00:00
migrations Only migrate the first 255 chars of a Github issue title (#28902) (#28912) 2024-01-31 14:18:26 +01:00
mirror More db.DefaultContext refactor (#27265) (#27347) 2023-09-29 13:35:01 +00:00
notify [GITEA] notifies admins on new user registration 2023-11-13 14:06:27 +01:00
org Delete repos of org when purge delete user (#27273) (#27728) 2023-11-01 10:03:12 +08:00
packages [GITEA] Generate install if condition for Alpine 2024-02-03 19:30:48 +01:00
pull Concatenate error in checkIfPRContentChanged (#28731) (#28737) 2024-01-16 14:39:23 +00:00
release Fix comment permissions (#28213) (#28216) 2023-11-26 13:56:50 +01:00
repository Fix DeleteCollaboration transaction behaviour (#28886) (#28889) 2024-01-31 14:18:26 +01:00
secrets Refactor secrets modification logic (#26873) 2023-09-05 15:21:02 +00:00
task Fix incorrect ctx usage in defer function (#27740) (#27741) 2023-10-22 14:36:49 +00:00
uinotification More db.DefaultContext refactor (#27265) (#27347) 2023-09-29 13:35:01 +00:00
user Forbid removing the last admin user (#28337) (#28793) 2024-01-16 14:41:11 +00:00
webhook Fix comment permissions (#28213) (#28216) 2023-11-26 13:56:50 +01:00
wiki Fix incorrect test code for error handling (#27139) 2023-09-20 08:51:36 +08:00