fix: Backport Rack proxy event to middleware #764
Merged
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.
The Rack Event handler instrumentation adds a Span Event representing the time the request was enqueued. See
opentelemetry-ruby-contrib/instrumentation/rack/lib/opentelemetry/instrumentation/rack/middlewares/event_handler.rb
Lines 263 to 264 in 1fa0810
The older middleware-based instrumentation represents the same information (optionally enabled via
config[:record_frontend_span]
) as ahttp_server.proxy
span as a "fake" parent span for the Rack server span. The Span Event approach is both more correct and more useful for analysis.This PR "backports" the Span Event approach to the middleware instrumentation. Since this is done unconditionally in the Rack Event handler instrumentation, I've made it unconditional in the middleware as well. If the
config[:record_frontend_span]
option is enabled, this will duplicate information, but I would argue we should deprecate that config option (and the corresponding code).Many thanks to @arielvalentin for writing great code
that I can stealto inspire me.