Skip to content

Concurrency for generic package publish API

What does this MR do?

The generic package publish API creates the package at first file upload.

When multiple file uploads are initiated by a client in parallel they will each race to be the one also creating the as-of-yet non-existent package record in the database.

Only one such racing request will win and all others will fail with a transaction error because they'll be viewed as attempting to insert duplicate (non-unique) records.

The endpoint must therefore only be called serially to guarantee success of multiple file uploads under a single name and version.

This change adds a documentation note under the pre-requisites section with an attempt at explaining why.

Related issues

Customer ticket: https://gitlab.zendesk.com/agent/tickets/290613

Author's checklist

If you are a GitLab team member and only adding documentation, do not add any of the following labels:

  • ~"frontend"
  • ~"backend"
  • ~"type::bug"
  • ~"database"

These labels cause the MR to be added to code verification QA issues.

Reviewer's checklist

Documentation-related MRs should be reviewed by a Technical Writer for a non-blocking review, based on Documentation Guidelines and the Style Guide.

  • If the content requires it, ensure the information is reviewed by a subject matter expert.
  • Technical writer review items:
    • Ensure docs metadata is present and up-to-date.
    • Ensure the appropriate labels are added to this MR.
    • Ensure a release milestone is set.
    • If relevant to this MR, ensure content topic type principles are in use, including:
      • The headings should be something you'd do a Google search for. Instead of Default behavior, say something like Default behavior when you close an issue.
      • The headings (other than the page title) should be active. Instead of Configuring GDK, say something like Configure GDK.
      • Any task steps should be written as a numbered list.
      • If the content still needs to be edited for topic types, you can create a follow-up issue with the docs-technical-debt label.
  • Review by assigned maintainer, who can always request/require the reviews above. Maintainer's review can occur before or after a technical writer review.
Edited by Clayton Cornell

Merge request reports