make jaeger span attribute-to-tag conversion exhaustive #5574
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.
Description
Right now, our quickwit span -> jaeger trace code doesn't support objects or null values and instead completely errors out which means that any trace where there is at least one span with an object with it does not work with Jaeger. I resolved this by adding support for Object and Null variants, encoding object keys delimited with
.
.quickwit/quickwit/quickwit-jaeger/src/lib.rs
Line 989 in 5329379
I opted to use iterools::Either because it was already available and avoids heap allocation except in the recursive 'flattening' case. I believe this will not impact performance of existing, functioning, use cases at all, in fact collect is shown to be faster in some cases, though I have not benchmarked it as it is a relatively cold part of the codebase.
How was this PR tested?
Docker build. Previously traces would error, now they don't.