Changes add_tags behavior to replace elements in the slice with the same key, if they exist, otherwise default to append.
Motivation
Using add_tags can cause us to have tags with duplicate keys (though different values), this has not been a problem because most of the sinks will transform the slice into a map which will naturally "dedupe". However, it causes a problem when we're using the max_tags configuration because now we don't have an accurate accounting of the number of tags.
This doesn't solve the problem of the metric being emitted with duplicate tags but that isn't something we've observed happens often.
Summary
Changes
add_tags
behavior to replace elements in the slice with the same key, if they exist, otherwise default to append.Motivation
Using
add_tags
can cause us to have tags with duplicate keys (though different values), this has not been a problem because most of the sinks will transform the slice into a map which will naturally "dedupe". However, it causes a problem when we're using themax_tags
configuration because now we don't have an accurate accounting of the number of tags.This doesn't solve the problem of the metric being emitted with duplicate tags but that isn't something we've observed happens often.
Test plan
Unit test.
Rollout/monitoring/revert plan