Skip to content

Improve symdb probe-locations reliability and output#333

Merged
ojung merged 1 commit intoDataDog:mainfrom
ojung:ojung/feat/symdb-probe-signatures
May 5, 2026
Merged

Improve symdb probe-locations reliability and output#333
ojung merged 1 commit intoDataDog:mainfrom
ojung:ojung/feat/symdb-probe-signatures

Conversation

@ojung
Copy link
Copy Markdown
Member

@ojung ojung commented Apr 8, 2026

Summary

Improve symdb search reliability for large services by adding retry logic, partial-result polling driven by indexing_status, and richer probe-location output with method signatures.

Changes

  • Add retry logic with exponential backoff for transient 502/503/504 errors (src/client.rs, src/commands/symdb.rs)
  • Add HttpError struct preserving status codes for programmatic retry decisions (src/client.rs)
  • Request partial results (allow_partial=true) and poll until every service-version reports a terminal indexing_status (COMPLETED, SOME_FAILED, ALL_FAILED, NO_ATTACHMENTS) with a 60s deadline (src/commands/symdb.rs)
  • Add --no-allow-partial flag to disable partial results when callers prefer waiting for full indexing (src/main.rs, src/commands/symdb.rs)
  • Switch fetch_children_bulk from /scopes/children?scope_name=... to /scopes/{id}/children (src/commands/symdb.rs)
  • Add format_probe_location helper that extracts ARG-type symbols into type:method(arg1, arg2, ...) matching the API's where.signature format (src/commands/symdb.rs)
  • Track seen locations and class IDs across polls via ProbeCollector to avoid duplicate children fetches (src/commands/symdb.rs)
  • Add signature field to ResolvedProbe and pass it through to where.signature in probe creation payload (src/commands/debugger.rs)
  • Both TYPE:METHOD and TYPE:METHOD(args) accepted as --probe-location values (src/commands/debugger.rs)
  • Update skill docs and docs/EXAMPLES.md to document the new signature format

Testing

Tested against large Java services (500–2600 probe locations). All complete within the 60s deadline, typically 12–29s depending on service size and indexing state.

@platinummonkey platinummonkey added the enhancement New feature or request label Apr 8, 2026
platinummonkey
platinummonkey previously approved these changes Apr 10, 2026
@ojung ojung marked this pull request as ready for review April 20, 2026 18:42
@ojung ojung marked this pull request as draft April 21, 2026 14:59
@ojung ojung force-pushed the ojung/feat/symdb-probe-signatures branch from 6aa79b2 to a3804ad Compare May 4, 2026 11:45
Add retry logic for transient 502/503/504 errors with exponential
backoff. Request partial results and poll until every service-version
reports a terminal indexing_status (COMPLETED, SOME_FAILED,
ALL_FAILED, NO_ATTACHMENTS) instead of the previous stable-polls
heuristic. Expose the flag as --no-allow-partial for callers that
prefer waiting for full indexing.

Switch the children endpoint to path-based /scopes/{id}/children.
Include argument type signatures in probe-location output
(e.g. MyClass:myMethod(int, String)). Track seen locations and
class IDs across polls via ProbeCollector to avoid duplicate work.
@ojung ojung force-pushed the ojung/feat/symdb-probe-signatures branch from a3804ad to 627fac8 Compare May 5, 2026 10:08
@ojung ojung requested a review from platinummonkey May 5, 2026 10:08
@ojung ojung changed the title feat(symdb): add method signatures to probe-locations output Improve symdb probe-locations reliability and output May 5, 2026
@platinummonkey platinummonkey marked this pull request as ready for review May 5, 2026 11:39
@ojung ojung merged commit 25d33a3 into DataDog:main May 5, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants