You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Add Vert.x 4 HTTP/2 server spans and metrics - #20922
copilot/fix-keycloak-http2-metricsopen-telemetry/opentelemetry-java-instrumentation:copilot/fix-keycloak-http2-metricsCopy head branch name to clipboard
copilot/fix-keycloak-http2-metricsopen-telemetry/opentelemetry-java-instrumentation:copilot/fix-keycloak-http2-metricsCopy head branch name to clipboard
Keycloak requests over TLS with HTTP/2 bypass Netty’s HTTP/1.1 server instrumentation, leaving server duration metrics missing. This adds instrumentation for Vert.x 4’s HTTP/2 request lifecycle.
Telemetry: Reuses standard HTTP server instrumentation, propagation, and suppression; preserves HTTP/1.1 ownership in Netty.
Lifecycle: Isolates concurrent streams and ends telemetry once on terminal response writes or failures, including header-only responses, trailers, resets, and connection closure.
Regression coverage: Exercises TLS/ALPN negotiation, duration metrics, server spans, and stream isolation across three Vert.x 4 implementation generations. Documentation distinguishes Vert.x-specific coverage from unsupported generic Netty HTTP/2 traffic.
CopilotAI
changed the title
[WIP] Fix missing Java-agent HTTP server metrics for Keycloak on HTTP/2
Add Vert.x 4 HTTP/2 server spans and metrics
Oct 23, 2026
Adds Javaagent instrumentation for Vert.x 4 HTTP/2 servers, addressing missing server spans and duration metrics for TLS/HTTP/2 requests while leaving HTTP/1.1 instrumentation with Netty.
Changes:
Adds request, response, and stream lifecycle instrumentation using shared HTTP telemetry support.
Adds TLS/ALPN, concurrent-stream, early-response, and failure tests across three Vert.x 4 implementation generations.
Registers the module and updates supported-library documentation, metadata collection, and license scanning.
[Javaagent] In Vert.x 4.3.7 and 4.5.35, header-only response.end(callback) invokes the original completion callback without passing it through the stream-write wrappers. When called under Context.root(), spans created by that callback therefore lose their server parent. Wrap argument 2 with the saved response context independently of telemetry completion, and add a header-only neutral-context callback regression.
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
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.
Keycloak requests over TLS with HTTP/2 bypass Netty’s HTTP/1.1 server instrumentation, leaving server duration metrics missing. This adds instrumentation for Vert.x 4’s HTTP/2 request lifecycle.
Fixes #8927.