forgejo/models/packages
Mathieu Fenniak e823e8cd69 fix: duplicate key violates unique constraint in concurrent debian package uploads (#11776)
Fixes #11438.

Whenever a "unique constraint violation" error is encountered by package mutation, detect if a `xorm.ErrUniqueConstraintViolation` error occurs.  If it does, retry the entire transaction.

## Checklist

The [contributor guide](https://forgejo.org/docs/next/contributor/) contains information that will be helpful to first time contributors. There also are a few [conditions for merging Pull Requests in Forgejo repositories](https://codeberg.org/forgejo/governance/src/branch/main/PullRequestsAgreement.md). You are also welcome to join the [Forgejo development chatroom](https://matrix.to/#/#forgejo-development:matrix.org).

### Tests for Go changes

(can be removed for JavaScript changes)

- I added test coverage for Go changes...
  - [ ] in their respective `*_test.go` for unit tests.
  - [ ] in the `tests/integration` directory if it involves interactions with a live Forgejo server.
- I ran...
  - [ ] `make pr-go` before pushing

### Documentation

- [ ] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs) to explain to Forgejo users how to use this change.
- [x] I did not document these changes and I do not expect someone else to do it.

### Release notes

- [x] This change will be noticed by a Forgejo user or admin (feature, bug fix, performance, etc.). I suggest to include a release note for this change.
- [ ] This change is not visible to a Forgejo user or admin (refactor, dependency upgrade, etc.). I think there is no need to add a release note for this change.

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/11776
Reviewed-by: Andreas Ahlenstorf <aahlenst@noreply.codeberg.org>
Co-authored-by: Mathieu Fenniak <mathieu@fenniak.net>
Co-committed-by: Mathieu Fenniak <mathieu@fenniak.net>
2026-03-26 21:50:25 +01:00
..
alpine chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
alt chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
conan chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
conda chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
container chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
cran chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
debian chore: move all test blank imports in a single package (#10662) 2026-01-02 05:32:32 +01:00
nuget refactor: replace Value() from Option[T] with Get() & ValueOrZeroValue() (#11218) 2026-02-10 16:41:21 +01:00
rpm chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
descriptor.go ci: detect and prevent empty case statements in Go code (#11593) 2026-03-10 02:50:28 +01:00
main_test.go chore: move all test blank imports in a single package (#10662) 2026-01-02 05:32:32 +01:00
package.go several fixes of ALT Package registry (#8475) 2025-07-10 17:12:07 +02:00
package_blob.go fix: package_blob.has_blake2b may be null (#7520) 2025-04-11 12:28:03 +00:00
package_blob_test.go chore: merge tests.AddFixtures and unittest.OverrideFixtures (#7648) 2025-04-25 09:14:33 +00:00
package_blob_upload.go chore: unify the usage of CryptoRandomString (#10110) 2025-11-15 13:24:53 +01:00
package_cleanup_rule.go chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
package_file.go fix: maven use groupId:artifactId for package name concatenation (#6352) 2025-06-01 09:02:29 +02:00
package_property.go chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
package_test.go fix: package_blob.has_blake2b may be null (#7520) 2025-04-11 12:28:03 +00:00
package_version.go fix: duplicate key violates unique constraint in concurrent debian package uploads (#11776) 2026-03-26 21:50:25 +01:00