Update Statsd tag serializer to allow falsy values #290
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.
Problem
If we provide a tag which has a boolean value, we are unable to properly track the
false
case, since the "true" string appears with the tag name, but the "false" string does not show up. This is because of this logic, which checks for tag value presence:dogstatsd-ruby/lib/datadog/statsd/serialization/tag_serializer.rb
Lines 58 to 66 in 517b830
true
is evaluated to present, so we would add that tag name and value; however,false
is evaluated to not present, so we would only add that tag name (not the value).Solution
First convert the tag value to a string before checking for presence. This does result in other values being deemed "present" now which were not previously though, such as
[]
and{}
. Is this a problem though?