Register SpanLinkAdapter and SpanLinkJson for reflection #6892
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.
What Does This Do
Uses a initialization-on-demand holder idiom for the DDSpanLink encoder to make sure that it is not initialized more than once, so it is thread safe. During debugging we saw a bunch of
which means that SpanLinkAdapter and SpanLinkJson were not registered for reflection to be used on GraalVM.
Registration for SpanLinkAdapter is required so Moshi is able to build the adapter during runtime, and for SpanLinkJson as well, since this is lazy init GraalVM can't auto infer reflections.
Motivation
SpanLinkAdapter was failing, thus producing invalid payloads (we also raised support request number 1631888)... there you can see the payload and logs for the auto instrumentation and DD side car.
We've have conducted load tests with the change in our environments and with the change the
Cannot decode v0.4 traces payload: msgp: attempted to decode type "array" with method for "str
error message is gone, and we didn't see any error whatsoever.Fixes
#6889