HTTP propagator: Better handling of invalid data #3730
Merged
+83
−7
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.
This PR improve the handling of trace propagation when the parent span_id is not present. In such case, the trace is still propagated without a span_id, which is a valid trace propagation payload.
The distributed tracing will have the correct correlation between the current service with the downstream service, but the downstream service parenting will likely be incorrect. This is still more desirable than completely losing trace correlation.
Also in this PR, there is the better handling of the scenario when a
TraceDigest
is not populated with a trace_id, which cannot happen in a digest created by the tracer, but can happen with users are manually testing the public methodDatadog::Tracing::Contrib::HTTP.inject(digest, env)
.In such cases, we were printing an error message, as this was an unhandled case that raised a legitimate Ruby exception:
This is now handled early in code, and logged as a debug message.