feat(code-mappings): Add batch splitting for large uploads#3210
Merged
feat(code-mappings): Add batch splitting for large uploads#3210
Conversation
Contributor
|
7cb21c6 to
5b0bce3
Compare
f5ab182 to
37fbb57
Compare
This was referenced Mar 12, 2026
5b0bce3 to
a7afb81
Compare
5720ec2 to
bbc4d47
Compare
3fcf380 to
8735962
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Member
|
Please check and resolve the open comments from the AI reviewers, before I do a full review. If any comments are inaccurate or non-actionable, please indicate that with a 👎 and mark the comment as resolved. Thanks! 🙏 |
3d14593 to
e288070
Compare
0434afa to
4b94685
Compare
szokeasaurusrex
approved these changes
Mar 19, 2026
Member
szokeasaurusrex
left a comment
There was a problem hiding this comment.
Left some l comments, which I would strongly recommend addressing before merge
Member
|
Ah also @romtsn, please add a changelog entry, either in this PR or a follow-up 🙏 |
romtsn
added a commit
that referenced
this pull request
Mar 20, 2026
_#skip-changelog_ Add the `sentry-cli code-mappings upload` subcommand group and the `upload` subcommand with file parsing and validation. This is the first in a stack of 4 PRs to support bulk uploading code mappings from a JSON file — useful for Java/Android multi-module projects that need dozens of mappings. This PR adds: - Command scaffold following the `repos`/`deploys` pattern - JSON file reading and validation (empty arrays, empty stackRoot/sourceRoot) - CLI args: positional `PATH`, `--repo`, `--default-branch` - Help and no-subcommand trycmd integration tests Stack: **#3207** → #3208 → #3209 → #3210 Backend PRs: getsentry/sentry#109783, getsentry/sentry#109785, getsentry/sentry#109786 Closes getsentry/sentry-android-gradle-plugin#1076 Closes getsentry/sentry-android-gradle-plugin#1077 --------- Co-authored-by: Claude Opus 4.6 <[email protected]>
romtsn
added a commit
that referenced
this pull request
Mar 24, 2026
…3208) *#skip-changelog* When `--repo` or `--default-branch` are not provided, infer them from the<br>local git repository. Uses the configured VCS remote (SENTRY_VCS_REMOTE / ini)<br>first, then falls back to best-effort remote detection (upstream > origin > first). Also extracts `find_best_remote()` as a shared utility in `src/utils/vcs.rs`,<br>replacing the inline logic that was duplicated in `git_repo_base_repo_name_preserve_case`. Stack: #3207 → [#3208](<#3208>) → [#3209](<#3209>) → [#3210](<#3210>) Backend PRs: [getsentry/sentry#109783](<getsentry/sentry#109783>), [getsentry/sentry#109785](<getsentry/sentry#109785>), [getsentry/sentry#109786](<getsentry/sentry#109786>) Closes [GRADLE-79](https://linear.app/getsentry/issue/GRADLE-79/add-git-inference-for-repo-name-and-default-branch) --------- Co-authored-by: Claude Opus 4.6 <[email protected]>
a008901 to
42740cf
Compare
romtsn
added a commit
that referenced
this pull request
Mar 24, 2026
…#3209) _#skip-changelog_ Connect the `code-mappings upload` command to the bulk code mappings API endpoint (`POST /api/0/organizations/{org}/code-mappings/bulk/`). Adds: - `bulk_upload_code_mappings()` method on `AuthenticatedApi` - Request/response data types in `src/api/data_types/code_mappings.rs` - Summary table and error reporting in the command output - Happy-path integration test with mock endpoint Stack: #3207 → #3208 → **#3209** → #3210 Backend PRs: getsentry/sentry#109783, getsentry/sentry#109785, getsentry/sentry#109786 Closes getsentry/sentry-android-gradle-plugin#1079 --------- Co-authored-by: Claude Opus 4.6 <[email protected]>
Base automatically changed from
rz/feat/code-mappings-api-integration
to
master
March 24, 2026 13:22
1b835b3 to
c29479d
Compare
Member
Author
|
addressed PR review in 38e43fa + added a changelog entry |
Split large mapping files into batches of 300 (the backend limit) per request. Each batch is sent sequentially with progress reporting. Results are merged into a single summary table. Batch-level HTTP failures are captured without aborting remaining batches, and the final exit code reflects any errors. Co-Authored-By: Claude Opus 4.6 <[email protected]>
For large uploads (hundreds of mappings), printing every row floods the terminal. Show only failed mappings in the table since those are actionable; successful ones are already reflected in the summary counts. Co-Authored-By: Claude Opus 4.6 <[email protected]>
Verify the CLI correctly handles HTTP 207 Multi-Status responses from the bulk code-mappings endpoint. The CLI treats 207 as a success at the HTTP level and relies on the JSON body to surface per-mapping errors. Co-Authored-By: Claude Opus 4.6 <[email protected]>
The Errors count in the summary line now includes both per-mapping errors and batch-level transport failures, matching the bail message. Co-Authored-By: Claude Opus 4.6 <[email protected]>
Co-Authored-By: Claude Opus 4.6 <[email protected]>
- Use div_ceil and lazy chunks iteration instead of collecting into Vec - Implement FromIterator for MergedResponse to separate merging from request logic - Avoid allocating Vec in print_error_table, iterate filter directly - Use AtomicU8 instead of AtomicU16 in test Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
72c6ab9 to
e30e462
Compare
The 207 test was identical to the 200 partial error test — same response body, same expected CLI output. No special 207 handling exists in the API client, so the test added no coverage. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

#skip-changelog
Split large mapping files into batches of 300 (the backend limit) per request.
Each batch is sent sequentially with progress reporting, and results are merged
into a single summary.
Also changes the output table to only show error rows — for large uploads
(hundreds of mappings), printing every row would flood the terminal. Successful
mappings are reflected in the summary counts instead.
Stack: #3207 → #3208 → #3209 → #3210
Backend PRs: getsentry/sentry#109783, getsentry/sentry#109785, getsentry/sentry#109786