Add put(AttributeKey<T>, T) overload to EventBuilder #6331
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.
Event payload fields seem to be different than attributes: open-telemetry/semantic-conventions#505
That's expected to some degree, since attribute types are limited to primitives and arrays of primitives, and event payloads are intended to be able to encode complex structured data, like bytes, object arrays, and maps of maps. But excluding
Attributes
/AttributesKey<?>
from the event payload API surface area seems odd, given how prevalent Attributes are in the other APIs.What happens if I want to include an attribute generated from semantic-conventions-java in my payload? Am I prohibited from doing that? Do I need to call
put(AttributeKey.getKey(), value)
to extract the string attribute key and loose type safety? This is poor ergonomics.I'm not exactly sure where things will land with how attributes and event fields overlap (if at all), but it seems like we ought to support our notion of
AttributeKey
in the API regardless. This PR adds that surface area. We might also consider adding aputAll(Attributes)
convenience mechanism for adding all the key value from a bundle of attributes into the payload.