Skip to content

Add instrumentation for quarkus-rest-client-reactive (javax, MicroProfile REST Client 1.0–2.x)#11496

Draft
dougqh wants to merge 1 commit into
masterfrom
feat/quarkus-rest-client-reactive-javax-instrumentation
Draft

Add instrumentation for quarkus-rest-client-reactive (javax, MicroProfile REST Client 1.0–2.x)#11496
dougqh wants to merge 1 commit into
masterfrom
feat/quarkus-rest-client-reactive-javax-instrumentation

Conversation

@dougqh
Copy link
Copy Markdown
Contributor

@dougqh dougqh commented May 28, 2026

Summary

  • Adds quarkus-rest-client-reactive-2.0 instrumentation for Quarkus 2.x stacks that use the javax.ws.rs namespace (MicroProfile REST Client 1.0–2.x)
  • Companion to Add instrumentation for quarkus-rest-client-reactive (MicroProfile REST Client 3.0+) #11495 which covers MicroProfile REST Client 3.0+ (jakarta namespace, Quarkus 3.x)
  • Same hook and filter pattern: intercepts RestClientBuilder.build(Class<?>), registers a ClientRequestFilter to inject Datadog + W3C propagation headers, creates an HTTP client span per request

Implementation

Identical to #11495 except all jakarta.* imports are replaced with javax.*. The muzzle range [1.0, 3.0) ensures this module activates only when microprofile-rest-client-api < 3.0 is on the classpath; the jakarta module activates at ≥ 3.0. Both can coexist in the agent jar without conflict because they use distinct Java packages (quarkus_rest_client_reactive_javax vs quarkus_rest_client_reactive).

Test plan

  • Unit tests pass (QuarkusRestClientJavaxInstrumentationTest — 2 JUnit 5 tests using RESTEasy MicroProfile 1.x client + JDK HttpServer): verify x-datadog-trace-id / x-datadog-parent-id headers are injected and a span is created per request
  • ./gradlew :dd-java-agent:instrumentation:quarkus:quarkus-rest-client-reactive-2.0:test passes locally
  • Muzzle check configured against microprofile-rest-client-api [1.0, 3.0)
  • Manual validation against a Quarkus 2.x app recommended before merge

Labels

comp:java-tracer, inst:quarkus, type:feature, tag:ai generated

🤖 Generated with Claude Code

…avax, MicroProfile REST Client 1.0–2.x)

Mirrors the jakarta-namespace module (PR #11495) for Quarkus 2.x stacks that use the
javax.ws.rs namespace. Intercepts RestClientBuilder.build(Class<?>) and registers a
ClientRequestFilter to inject Datadog + W3C propagation headers on every outbound REST call.
Muzzle range [1.0, 3.0) ensures this module activates only when microprofile-rest-client-api
< 3.0 is present; the jakarta module (#11495) handles 3.0+.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@dd-octo-sts
Copy link
Copy Markdown
Contributor

dd-octo-sts Bot commented May 28, 2026

🟢 Java Benchmark SLOs — All performance SLOs passed

Suite Status
Startup 🟢 pass

SLO thresholds are defined here based on automatically generated metrics. A warning is raised when results are within 5% of the threshold.

PR vs. master results

Startup Time

Scenario This PR master Change
insecure-bank / iast 13,970 ms 13,853 ms +0.8%
insecure-bank / tracing 12,995 ms 12,970 ms +0.2%
petclinic / appsec 17,313 ms 16,720 ms +3.5%
petclinic / iast 17,213 ms 17,101 ms +0.7%
petclinic / profiling 17,207 ms 17,113 ms +0.6%
petclinic / tracing 16,542 ms 16,304 ms +1.5%

Commit: efd326e6 · CI Pipeline · Benchmarking Platform UI


Load and DaCapo benchmarks can be triggered manually in the GitLab pipeline. Results will appear in the Benchmarking Platform UI after completion.

@datadog-official
Copy link
Copy Markdown
Contributor

datadog-official Bot commented May 28, 2026

Pipelines

Fix all issues with BitsAI

⚠️ Warnings

🚦 2 Pipeline jobs failed

DataDog/apm-reliability/dd-trace-java | config-inversion-linter   View in Datadog   GitLab

🛟 This job is unlikely to succeed on retry. Please review your pipeline configuration. Decorator instrumentationNames missing analytics entries in supported-configurations.json: multiple instances for 'quarkus-rest-client-reactive', 'quarkus-rest-client', and 'microprofile-rest-client'.

DataDog/apm-reliability/dd-trace-java | muzzle: [2/8]   View in Datadog   GitLab

🛟 This job is unlikely to succeed on retry. Please review your pipeline configuration. Muzzle validation failed due to missing classes: javax.ws.rs.core.Configurable, javax.ws.rs.client.ClientRequestFilter, javax.ws.rs.client.ClientResponseFilter, javax.ws.rs.core.MultivaluedMap, javax.ws.rs.client.ClientRequestContext, javax.ws.rs.client.ClientResponseContext.

Useful? React with 👍 / 👎

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: efd326e | Docs | Datadog PR Page | Give us feedback!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant