Repository navigation
[RUM-18297] Add ppdb-symbols upload command - #2491
Merged
Merged
Conversation
Uploads first-party/project assembly Portable PDBs, correlated by the build-time debug ID manifest (dd_debug_ids.json) generated by dd-sdk-maui, so managed exception stack traces can be symbolicated. Modeled on the pe-symbols upload command; scoping to first-party assemblies is left to the caller (the future RUM-18298 MSBuild wiring) via which paths it passes in, not filtered by this command itself.
Name by symbol format (Portable PDB), not app framework, matching the pe-symbols/elf-symbols/wasm-symbols/dsyms convention and the ppdb-over-maui source_type precedent from RUM-18289 — the command only uploads pPDBs, so a framework-named scope implied broader coverage than it has.
…ID handling Two bugs caught by blind verification: manifest lookup was case-sensitive with no fallback (risky given .NET/Windows case-insensitive assembly names), and a falsy check on the debug ID treated a legitimately empty-string entry as missing. Add lookupDebugId() with a case-insensitive fallback, and tests for both fixes plus previously-uncovered paths (invalid symbols location, non-.pdb file input, array/scalar manifest JSON, --disable-git).
…-symbols lookupDebugId's case-insensitive fallback could silently pick whichever key won by Object.keys iteration order when a manifest had two entries differing only by case mapped to different debug IDs. Now such a collision throws AmbiguousManifestEntryError, caught by the upload command to skip the file with an explicit warning instead of silently attaching the wrong debug ID.
|
✅ All CI checks and tests passed. 🎉 All green!🧪 All tests passed 🔗 Commit SHA: 6b14c00 | Docs | View more details | Give us feedback! |
Add the missing eslint-disable header to cli.ts (flagged by lint:packages) and register ppdb-symbols upload's required arguments in cli.test.ts's fips-test harness, without which clipanion never reaches execute() and the --fips tests fail with 0 enableFips calls.
Drarig29
reviewed
Sep 7, 2026
Drarig29
left a comment
Collaborator
There was a problem hiding this comment.
Hi! Before I review, can your team review the code?
Please go through https://github.com/DataDog/datadog-ci/blob/master/CONTRIBUTING.md#things-to-update to add the codeowners, and other things to update
Addresses reviewer feedback on PR #2491 pointing at CONTRIBUTING.md's checklist for new commands (CODEOWNERS entry, command README, root README link). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Contributor
Author
There was a problem hiding this comment.
A manifest with two names that differ only by letter case can select one debug ID instead of reporting an error. A direct .PDB path also passes validation, but the command does not remove its extension and skips the valid symbol file.
🤖 Datadog Autotest · Commit e12ca24 · What is Autotest? · @DataDog review to ask questions · Any feedback? Reach out in #autotest
lookupDebugId's exact-case-match branch returned immediately without running the case-insensitive collision check, so a manifest with two case-variant keys mapping to different debug IDs could silently upload under the wrong one. Removed the shortcut so all lookups go through the same ambiguity check. upload.ts hardcoded a lowercase '.pdb' suffix strip, so a directly-passed file with an uppercase .PDB extension (explicitly accepted by getPdbFiles) kept its extension in the computed assembly name and failed manifest lookup. Now strips whatever extension the file actually has. Found by Datadog Autotest on PR #2491. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
ImaneLargou
approved these changes
Sep 8, 2026
brett0000FF
approved these changes
Sep 8, 2026
sbarrio
reviewed
Sep 9, 2026
sbarrio
approved these changes
Sep 9, 2026
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ppdb-upload-command
Aligns with the command cli.ts template updated in #2499. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Draft
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.
Summary
datadog-ci ppdb-symbols uploadcommand that uploads .NET Portable PDBs for MAUI apps, modeled onpe-symbols upload, to enable server-side symbolication of managed C# exception stack traces.flutter-symbols(single mapping per app version), each PDB is correlated individually by debug ID, read from a build-time manifest (dd_debug_ids.json, generated bydd-sdk-maui, passed via--debug-id-manifest) rather than recomputed from the PDB itself — avoiding a risk of the uploader and the SDK's own ID computation diverging.dotnet_portable_pdbmetadata type is tracked separately (RUM-18296) and is not part of this PR.Test plan