Skip to content

feat(ci): raise junit upload soft cap to 20 MiB - #1735

Merged
mergify[bot] merged 1 commit into
mainfrom
devs/sileht/mrgfy-8125-cli-soft-cap-20mib/raise-junit-upload-soft-cap-20-mib--1e421632
Jul 21, 2026
Merged

feat(ci): raise junit upload soft cap to 20 MiB#1735
mergify[bot] merged 1 commit into
mainfrom
devs/sileht/mrgfy-8125-cli-soft-cap-20mib/raise-junit-upload-soft-cap-20-mib--1e421632

Conversation

@sileht

@sileht sileht commented Jul 21, 2026

Copy link
Copy Markdown
Member

Raise the client-side gzipped upload soft cap (the per-chunk split
target in junit_process::split) from 10 MiB to 20 MiB.

This cap is a client-side split target, not the server's limit: the
ingest endpoint hard-caps gzipped payloads at 25 MiB (MRGFY-8124), so
sizing each chunk under 20 MiB leaves 5 MiB of headroom below the 413
rejection threshold. Larger chunks mean fewer, larger uploads for big
reports (WiseTech Global case): a 20 MiB gzipped chunk holds roughly
120 MiB of raw JUnit XML worst-case (stacktrace-heavy), up to ~190 MiB
for passing-heavy reports.

The doc comment is rewritten to describe the soft/hard split, dropping
the old wording that implied the CLI cap was itself the endpoint's
refusal threshold.

A compile-time assertion mirrors the backend's 25 MiB hard cap and
enforces the 5 MiB headroom: since the two limits live in separate
services linked only by prose, a future bump that crossed the hard cap
would otherwise ship silently and 413-drop every over-cap chunk. Now
it breaks the build instead. Existing split tests inject their own
small cap, so they are unaffected by the constant's value.

Blocked by MRGFY-8124: must not deploy before the backend 25 MiB hard
cap is live. With the server still at 10 MiB, chunks in the 10-20 MiB
range would 413 and their data would be dropped. Ships as a draft
until the backend is deployed.

Fixes MRGFY-8125

Raise the client-side gzipped upload soft cap (the per-chunk split
target in junit_process::split) from 10 MiB to 20 MiB.

This cap is a client-side split target, not the server's limit: the
ingest endpoint hard-caps gzipped payloads at 25 MiB (MRGFY-8124), so
sizing each chunk under 20 MiB leaves 5 MiB of headroom below the 413
rejection threshold. Larger chunks mean fewer, larger uploads for big
reports (WiseTech Global case): a 20 MiB gzipped chunk holds roughly
120 MiB of raw JUnit XML worst-case (stacktrace-heavy), up to ~190 MiB
for passing-heavy reports.

The doc comment is rewritten to describe the soft/hard split, dropping
the old wording that implied the CLI cap was itself the endpoint's
refusal threshold.

A compile-time assertion mirrors the backend's 25 MiB hard cap and
enforces the 5 MiB headroom: since the two limits live in separate
services linked only by prose, a future bump that crossed the hard cap
would otherwise ship silently and 413-drop every over-cap chunk. Now
it breaks the build instead. Existing split tests inject their own
small cap, so they are unaffected by the constant's value.

Blocked by MRGFY-8124: must not deploy before the backend 25 MiB hard
cap is live. With the server still at 10 MiB, chunks in the 10-20 MiB
range would 413 and their data would be dropped. Ships as a draft
until the backend is deployed.

Fixes MRGFY-8125

Change-Id: I1e4216324244f3c3da004b9b86c7b28591c5df73
Copilot AI review requested due to automatic review settings July 21, 2026 12:09
@mergify
mergify Bot deployed to Mergify Merge Protections July 21, 2026 12:09 Active
@sileht
sileht temporarily deployed to func-tests-live July 21, 2026 12:09 — with GitHub Actions Inactive
@mergify

mergify Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Merge Protections

🟢 All 6 merge protections satisfied — ready to merge.

Show 6 satisfied protections

🟢 🤖 Continuous Integration

  • all of:
    • check-success=ci-gate

🟢 👀 Review Requirements

  • any of:
    • #approved-reviews-by>=2
    • author = dependabot[bot]
    • author = mergify-ci-bot
    • author = renovate[bot]

🟢 Enforce conventional commit

Make sure that we follow https://www.conventionalcommits.org/en/v1.0.0/

  • title ~= ^(fix|feat|internal|docs|style|refactor|perf|test|build|ci|chore|revert|ui)(?:\(.+\))?!?:

🟢 🔎 Reviews

  • #changes-requested-reviews-by = 0
  • #review-requested = 0
  • #review-threads-unresolved = 0

🟢 📕 PR description

  • body ~= (?ms:.{48,})

🟢 🚦 Auto-queue

When all merge protections are satisfied, this pull request will be queued automatically.

@sileht
sileht marked this pull request as ready for review July 21, 2026 12:10

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Updates the mergify ci junit-process upload chunk sizing to reduce the number of OTLP uploads for large JUnit reports, while keeping client-side chunks safely below the ingest service’s hard gzip payload limit.

Changes:

  • Raise MAX_GZIPPED_UPLOAD_BYTES (client-side split target) from 10 MiB to 20 MiB.
  • Rewrite the doc comment to clarify the “soft cap” (client target) vs the backend “hard cap”.
  • Add a compile-time assertion enforcing 5 MiB headroom under the mirrored 25 MiB backend hard cap.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread crates/mergify-ci/src/junit_process/upload.rs
Comment thread crates/mergify-ci/src/junit_process/upload.rs
@mergify
mergify Bot requested a review from a team July 21, 2026 12:15
@mergify
mergify Bot requested a review from a team July 21, 2026 13:08
@mergify

mergify Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Merge Queue Status

  • Entered queue2026-07-21 13:12 UTC · Rule: default · triggered by merge protections
  • Checks skipped · PR is already up-to-date
  • Merged2026-07-21 13:13 UTC · at f1998a817ca2a0f5fdfc25a72959a8245c69ff6a · squash

This pull request spent 55 seconds in the queue, including 7 seconds running CI.

Required conditions to merge

@mergify mergify Bot added the queued label Jul 21, 2026
@mergify
mergify Bot merged commit 3384f7f into main Jul 21, 2026
23 checks passed
@mergify
mergify Bot deleted the devs/sileht/mrgfy-8125-cli-soft-cap-20mib/raise-junit-upload-soft-cap-20-mib--1e421632 branch July 21, 2026 13:13
@mergify mergify Bot removed the queued label Jul 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

4 participants