apm-integrations skill: RPC guidance - #12443
jordan-wong wants to merge 4 commits into
Conversation
…quisite for muzzle{}
muzzle.md covered muzzle{} block content extensively but never stated that
the block only exists because of the dd-trace-java.module.instrumentation
plugin id in plugins{}. An agent rewriting a module's build.gradle from
scratch can drop that plugin id and hit "Could not find method muzzle()"
with no guidance pointing at the actual cause.
… rule Two gaps found from a gRPC generation exercise: 1. When wholesale-rewriting a module, the pre-existing file set needs to be treated as a floor to account for, not a suggestion. A file with no obvious class overlap with whatever the rewrite is focused on (a profiling hook, an edge-case advice class) is exactly the kind that never resurfaces once you're deep in a specific rewrite — the fix is an explicit enumerate-and-account-for pass, not "be more careful." 2. Libraries with distinct client and server call paths need distinct decorator/component pairs per role — sharing one decorator collapses the client-vs-server distinction a trace viewer relies on.
🟢 Java Benchmark SLOs — All performance SLOs passed
PR vs. master results
Commit: Load and DaCapo benchmarks can be triggered manually in the GitLab pipeline. Results will appear in the Benchmarking Platform UI after completion. |
This comment has been minimized.
This comment has been minimized.
|
Hi! 👋 Thanks for your pull request! 🎉 To help us review it, please make sure to:
If you need help, please check our contributing guidelines. |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 56aa292de5
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
dd-trace-java.muzzle is the plugin that actually registers the muzzle{}
DSL extension, not dd-trace-java.module.instrumentation. The parent
dd-java-agent/instrumentation/build.gradle applies dd-trace-java.muzzle
on behalf of any subproject that applies module.instrumentation, so
module.instrumentation is the correct plugin id to add to an
instrumentation module's build.gradle, but the doc was wrong about it
being the one that registers the block directly.
Empty commit to re-run the pipeline after a flaky muzzle shard failure unrelated to this PR's docs-only content (master's HEAD showed the same failure at the same time).
Changes
muzzle.md:muzzle {}requires thedd-trace-java.module.instrumentationplugin id inplugins {}— omitting it fails the build with a misleading "Could not find method muzzle()" error.instrumenter-module.md: when rewriting a module, treat its existing file set as a floor — account for every file, not just the ones you're focused on. Libraries with distinct client/server paths (gRPC, Thrift, Dubbo) need separate decorator/component pairs per role.Source
From the gRPC blind-regen cycle (#12417): a dropped plugin id broke the build, a profiling-hook file was silently omitted during a module rewrite, and client/server spans shared one decorator with no tag differentiation.
Toolkit research context
apm-instrumentation-toolkit Java eval-research: blind-regenerates existing instrumentation to find toolkit-guidance gaps, encodes fixes here. Docs-only.