Skip to content

Commit

Permalink
increase retro compat with all sanitization config value code
Browse files Browse the repository at this point in the history
Signed-off-by: Eliott Bouhana <eliott.bouhana@datadoghq.com>
  • Loading branch information
eliottness committed Feb 4, 2025
1 parent 09cab87 commit 352d7a5
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 8 deletions.
2 changes: 1 addition & 1 deletion internal/newtelemetry/client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ func TestClientFlush(t *testing.T) {
assert.Equal(t, "key:value,key2:value2", config.Configuration[1].Value)
assert.Equal(t, OriginCode, config.Configuration[1].Origin)
assert.Equal(t, "key3", config.Configuration[2].Name)
assert.Equal(t, "1,2,3", config.Configuration[2].Value)
assert.Equal(t, "[1 2 3]", config.Configuration[2].Value)
assert.Equal(t, OriginDDConfig, config.Configuration[2].Origin)
assert.Equal(t, "key4", config.Configuration[3].Name)
assert.Equal(t, "{1}", config.Configuration[3].Value)
Expand Down
22 changes: 15 additions & 7 deletions internal/newtelemetry/configuration.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,19 @@ func SanitizeConfigValue(value any) any {
case float64:
// https://github.com/golang/go/issues/59627
if math.IsNaN(val) || math.IsInf(val, 0) {
return ""
return nil
}
return val
case []string:
return strings.Join(val, ",") // Retro compatibility with old code
}

if _, ok := value.(json.Marshaler); ok {
return value
}

if v, ok := value.(fmt.Stringer); ok {
return v.String()
}

valueOf := reflect.ValueOf(value)
Expand All @@ -100,12 +110,14 @@ func SanitizeConfigValue(value any) any {
switch {
case valueOf.Kind() == reflect.Slice, valueOf.Kind() == reflect.Array:
var sb strings.Builder
sb.WriteString("[")
for i := 0; i < valueOf.Len(); i++ {
if i > 0 {
sb.WriteString(",")
sb.WriteString(" ")
}
sb.WriteString(fmt.Sprintf("%v", valueOf.Index(i)))
sb.WriteString(fmt.Sprintf("%v", valueOf.Index(i).Interface()))
}
sb.WriteString("]")
return sb.String()
case valueOf.Kind() == reflect.Map:
kvPair := make([]struct {
Expand Down Expand Up @@ -139,9 +151,5 @@ func SanitizeConfigValue(value any) any {
return sb.String()
}

if _, ok := value.(json.Marshaler); ok {
return value
}

return fmt.Sprintf("%v", value)
}

0 comments on commit 352d7a5

Please sign in to comment.