Backport of 'Optimize remote CI artifact parsing and size validation' (19.2)
What does this MR do and why?
This is an N-1 backport for GitLab Dedicated, which runs 19.2 and cannot upgrade to 19.3 for several weeks. It needs release manager agreement to merge into 19-2-stable-ee. It is part of the fix set tracked in https://gitlab.com/gitlab-org/gitlab/-/work_items/605350 (Ci::BuildFinishedWorker latency) and #597765 (severity::2, actively paging a Dedicated tenant).
Backports !246874 (merged), merged and released in 19.3.0.
19.2 already contains the underlying change, from !244619 (merged), but it sits behind the ci_optimize_artifact_parsing feature flag, which defaults to disabled. No self-managed or Dedicated instance runs it today. This backport removes the flag, activating the behavior on 19.2.
Before this change, a remote report artifact (for example a JUnit archive) was downloaded twice: once by DecompressedArtifactSizeValidator to check its decompressed size, then again by Artifactable#each_blob to parse it. The artifact is now downloaded once, and the local copy is reused for both steps. The size check also now pipes gzip -dc through head -c max_bytes + 1, so an oversized archive stops decompressing at the limit instead of decompressing fully.
Both costs run synchronously inside Ci::BuildFinishedWorker, as object storage round trips and subprocess CPU time. The flag was at 100% on GitLab.com before it was removed.
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
- This MR is backporting a bug fix, documentation update, or spec fix, previously merged in the default branch.
- The MR that fixed the bug on the default branch has been deployed to GitLab.com (not applicable for documentation or spec changes).
- The MR title is descriptive (e.g. "Backport of 'title of default branch MR'"). This is important, since the title will be copied to the patch blog post.
- Required labels have been applied to this merge request
- severity label and bug subtype labels (if applicable)
- If this MR fixes a bug that affects customers, the customer label has been applied.
- This MR has been approved by a maintainer (only one approval is required).
- Ensure the
e2e:test-on-omnibus-eejob has succeeded, or if it has failed, investigate the failures. If you determine the failures are unrelated, you may proceed. If you need assistance investigating, request help in the #s_developer_experience Slack channel to confirm the failures are unrelated to the merge request.
Note to the merge request author and maintainer
If you have questions about the patch release process, please:
- Refer to the patch release runbook for engineers and maintainers for guidance.
- Ask questions on the
#releasesSlack channel (internal only). - Once the backport has been merged, the commit changes will be automatically deployed to a release environment that can be used for manual validation. See after merging runbook for details.