Skip to content

Commit

Permalink
Update Statsd tag serializer to allow falsy values
Browse files Browse the repository at this point in the history
This instead now ensures that we skip including the tag value only if:
- it is equal to 'nil'
- it when stringified is equal to 'nil'

The reasoning for this was to make it so falsy values (e.g. false) will now be
included in our tag content, instead of skipped.
  • Loading branch information
joseph-hughes committed Dec 12, 2024
1 parent 694f421 commit 0c67365
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 4 deletions.
8 changes: 4 additions & 4 deletions lib/datadog/statsd/serialization/tag_serializer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -59,10 +59,10 @@ def to_tags_list(tags)
case tags
when Hash
tags.map do |name, value|
if value
escape_tag_content("#{name}:#{value}")
else
if value&.to_s.nil?
escape_tag_content(name)
else
escape_tag_content("#{name}:#{value}")
end
end
when Array
Expand All @@ -75,7 +75,7 @@ def to_tags_list(tags)
def escape_tag_content(tag)
tag = tag.to_s
return tag unless tag.include?('|')
tag.delete('|,')
tag.delete('|,')
end

def dd_tags(env = ENV)
Expand Down
14 changes: 14 additions & 0 deletions spec/statsd/serialization/tag_serializer_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,20 @@
expect(subject.format([tag])).to eq 'node:storage'
end

it 'ignores nil values and formats all other falsy values correctly' do
message_tags_hash = {
empty_array: [],
missing: nil,
'empty_hash' => {},
blank: '',
:false_value => false,
'results in blank': double('some tag', to_s: ''),
'results in nil': double('some tag', to_s: nil),
}

expect(subject.format(message_tags_hash)).to eq 'empty_array:[],missing,empty_hash:{},blank:,false_value:false,results in blank:,results in nil'
end

it 'formats frozen tags correctly' do
expect(subject.format(['name:foobarfoo'.freeze])).to eq 'name:foobarfoo'
end
Expand Down

0 comments on commit 0c67365

Please sign in to comment.