Closed
Description
Component(s)
No response
What happened?
Describe the bug
The collector panics when using confmap.enableMergeAppendOption
.
Steps to reproduce
Running print-initial-config
with confmap.enableMergeAppendOption
panics as such:
$ cat /tmp/generic.yaml
processors:
resource:
attributes:
- key: deployment.region
value: "nl"
action: upsert
$ cat /tmp/host-specific.yaml
processors:
resource:
attributes:
- key: app
value: "foo"
action: upsert
$ otelcol-contrib print-initial-config --feature-gates=otelcol.printInitialConfig,confmap.enableMergeAppendOption --config /tmp/host-specific.yaml --config /tmp/generic.yaml
panic: reflect.Value.Equal: values of type map[string]interface {} are not comparable
goroutine 1 [running]:
reflect.Value.Equal({0x41afea0?, 0xc0008ec980?, 0x0?}, {0x41afea0?, 0xc000918ce0?, 0x194?})
reflect/value.go:3221 +0x6ec
go.opentelemetry.io/collector/confmap.isPresent({0x3fb0820?, 0xc000cf07e0?, 0x0?}, {0x41afea0?, 0xc000918ce0?, 0xc00086cfc8?})
go.opentelemetry.io/collector/[email protected]/merge.go:66 +0xdb
go.opentelemetry.io/collector/confmap.mergeSlice({0x3fb0820?, 0xc000cf07b0?, 0xc000a36fd6?}, {0x3fb0820?, 0xc000c7fad0?, 0x0?})
go.opentelemetry.io/collector/[email protected]/merge.go:56 +0x37a
go.opentelemetry.io/collector/confmap.mergeAppend(0x0?, 0xc0009043f0)
go.opentelemetry.io/collector/[email protected]/merge.go:36 +0x1fc
go.opentelemetry.io/collector/confmap.mergeAppend(0xc000d1f518?, 0xc000904390)
go.opentelemetry.io/collector/[email protected]/merge.go:39 +0x1dd
go.opentelemetry.io/collector/confmap.mergeAppend(0xc0009058f0?, 0xc0008eb290)
go.opentelemetry.io/collector/[email protected]/merge.go:39 +0x1dd
github.com/knadh/koanf/v2.(*Koanf).merge(0xc0008eb320, 0xc0009058f0, 0xc0005858c8)
github.com/knadh/koanf/[email protected]/koanf.go:408 +0xab
github.com/knadh/koanf/v2.(*Koanf).Load(0xc0008eb320, {0x51b87d8?, 0xc0005858b8?}, {0x0?, 0x0?}, {0xc000d1f808, 0x1, 0x41a2c5?})
github.com/knadh/koanf/[email protected]/koanf.go:120 +0x12e
go.opentelemetry.io/collector/confmap.(*Conf).mergeAppend(0xc000142430, 0x51fe590?)
go.opentelemetry.io/collector/[email protected]/confmap.go:184 +0x76
go.opentelemetry.io/collector/confmap.(*Resolver).Resolve(0xc000cdaee0, {0x51fe590, 0x77032c0})
go.opentelemetry.io/collector/[email protected]/resolver.go:185 +0x2fb
go.opentelemetry.io/collector/otelcol.newConfigPrintSubCommand.func1(0xc0009c5208, {0xc000cd4870?, 0x4?, 0x49cdfee?})
go.opentelemetry.io/collector/[email protected]/command_print.go:44 +0xf8
github.com/spf13/cobra.(*Command).execute(0xc0009c5208, {0xc000cd4820, 0x5, 0x5})
github.com/spf13/[email protected]/command.go:1015 +0xa94
github.com/spf13/cobra.(*Command).ExecuteC(0xc0009c4608)
github.com/spf13/[email protected]/command.go:1148 +0x40c
github.com/spf13/cobra.(*Command).Execute(0x4baf830?)
github.com/spf13/[email protected]/command.go:1071 +0x13
main.runInteractive({0x4baf830, {{0x4a0005c, 0x10}, {0x4a72eb0, 0x27}, {0x49cface, 0x5}}, 0x0, {{{0x0, 0x0, ...}, ...}}, ...})
go.opentelemetry.io/collector/cmd/builder/main.go:52 +0x5d
main.run(...)
go.opentelemetry.io/collector/cmd/builder/main_others.go:10
main.main()
go.opentelemetry.io/collector/cmd/builder/main.go:45 +0x2d8
What did you expect to see?
No panic. The lists should be merged, and the output should be something like:
processors:
resource:
attributes:
- key: deployment.region
value: "nl"
action: upsert
- key: app
value: "foo"
action: upsert
What did you see instead?
The collector panics.
Collector version
v0.124.0
Environment information
No response
OpenTelemetry Collector configuration
Log output
panic: reflect.Value.Equal: values of type map[string]interface {} are not comparable
goroutine 1 [running]:
reflect.Value.Equal({0x41afea0?, 0xc0008ec980?, 0x0?}, {0x41afea0?, 0xc000918ce0?, 0x194?})
reflect/value.go:3221 +0x6ec
go.opentelemetry.io/collector/confmap.isPresent({0x3fb0820?, 0xc000cf07e0?, 0x0?}, {0x41afea0?, 0xc000918ce0?, 0xc00086cfc8?})
go.opentelemetry.io/collector/[email protected]/merge.go:66 +0xdb
go.opentelemetry.io/collector/confmap.mergeSlice({0x3fb0820?, 0xc000cf07b0?, 0xc000a36fd6?}, {0x3fb0820?, 0xc000c7fad0?, 0x0?})
go.opentelemetry.io/collector/[email protected]/merge.go:56 +0x37a
go.opentelemetry.io/collector/confmap.mergeAppend(0x0?, 0xc0009043f0)
go.opentelemetry.io/collector/[email protected]/merge.go:36 +0x1fc
go.opentelemetry.io/collector/confmap.mergeAppend(0xc000d1f518?, 0xc000904390)
go.opentelemetry.io/collector/[email protected]/merge.go:39 +0x1dd
go.opentelemetry.io/collector/confmap.mergeAppend(0xc0009058f0?, 0xc0008eb290)
go.opentelemetry.io/collector/[email protected]/merge.go:39 +0x1dd
github.com/knadh/koanf/v2.(*Koanf).merge(0xc0008eb320, 0xc0009058f0, 0xc0005858c8)
github.com/knadh/koanf/[email protected]/koanf.go:408 +0xab
github.com/knadh/koanf/v2.(*Koanf).Load(0xc0008eb320, {0x51b87d8?, 0xc0005858b8?}, {0x0?, 0x0?}, {0xc000d1f808, 0x1, 0x41a2c5?})
github.com/knadh/koanf/[email protected]/koanf.go:120 +0x12e
go.opentelemetry.io/collector/confmap.(*Conf).mergeAppend(0xc000142430, 0x51fe590?)
go.opentelemetry.io/collector/[email protected]/confmap.go:184 +0x76
go.opentelemetry.io/collector/confmap.(*Resolver).Resolve(0xc000cdaee0, {0x51fe590, 0x77032c0})
go.opentelemetry.io/collector/[email protected]/resolver.go:185 +0x2fb
go.opentelemetry.io/collector/otelcol.newConfigPrintSubCommand.func1(0xc0009c5208, {0xc000cd4870?, 0x4?, 0x49cdfee?})
go.opentelemetry.io/collector/[email protected]/command_print.go:44 +0xf8
github.com/spf13/cobra.(*Command).execute(0xc0009c5208, {0xc000cd4820, 0x5, 0x5})
github.com/spf13/[email protected]/command.go:1015 +0xa94
github.com/spf13/cobra.(*Command).ExecuteC(0xc0009c4608)
github.com/spf13/[email protected]/command.go:1148 +0x40c
github.com/spf13/cobra.(*Command).Execute(0x4baf830?)
github.com/spf13/[email protected]/command.go:1071 +0x13
main.runInteractive({0x4baf830, {{0x4a0005c, 0x10}, {0x4a72eb0, 0x27}, {0x49cface, 0x5}}, 0x0, {{{0x0, 0x0, ...}, ...}}, ...})
go.opentelemetry.io/collector/cmd/builder/main.go:52 +0x5d
main.run(...)
go.opentelemetry.io/collector/cmd/builder/main_others.go:10
main.main()
go.opentelemetry.io/collector/cmd/builder/main.go:45 +0x2d8
Additional context
No response