Skip to content

Commit f3d6477

Browse files
committed
[chore] Do not introduce pointers in the deprecated batcher fields
Do not introduce an unnecessary Go API breaking change
1 parent 8099e51 commit f3d6477

File tree

2 files changed

+34
-6
lines changed

2 files changed

+34
-6
lines changed

exporter/exporterbatcher/config.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,26 +42,26 @@ type SizeConfig struct {
4242
// Deprecated: [v0.121.0] use SizeConfig.
4343
type MinSizeConfig struct {
4444
// Deprecated: [v0.121.0] use SizeConfig.MinSize.
45-
MinSizeItems *int `mapstructure:"min_size_items"`
45+
MinSizeItems int `mapstructure:"min_size_items"`
4646
}
4747

4848
// Deprecated: [v0.121.0] use SizeConfig.
4949
type MaxSizeConfig struct {
5050
// Deprecated: [v0.121.0] use SizeConfig.MaxSize.
51-
MaxSizeItems *int `mapstructure:"max_size_items"`
51+
MaxSizeItems int `mapstructure:"max_size_items"`
5252
}
5353

5454
func (c *Config) Unmarshal(conf *confmap.Conf) error {
5555
if err := conf.Unmarshal(c); err != nil {
5656
return err
5757
}
5858

59-
if c.MinSizeItems != nil {
60-
c.SizeConfig.MinSize = *c.MinSizeItems
59+
if conf.IsSet("min_size_items") {
60+
c.SizeConfig.MinSize = c.MinSizeItems
6161
}
6262

63-
if c.MaxSizeItems != nil {
64-
c.SizeConfig.MaxSize = *c.MaxSizeItems
63+
if conf.IsSet("max_size_items") {
64+
c.SizeConfig.MaxSize = c.MaxSizeItems
6565
}
6666

6767
return nil

exporter/exporterbatcher/config_test.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import (
77
"testing"
88

99
"github.com/stretchr/testify/require"
10+
11+
"go.opentelemetry.io/collector/confmap"
1012
)
1113

1214
func TestValidateConfig(t *testing.T) {
@@ -40,3 +42,29 @@ func TestValidateSizeConfig(t *testing.T) {
4042
}
4143
require.EqualError(t, cfg.Validate(), "`max_size` must be greater than or equal to mix_size")
4244
}
45+
46+
func TestUnmarshalDeprecatedConfig(t *testing.T) {
47+
cfg := NewDefaultConfig()
48+
require.NoError(t, cfg.Unmarshal(confmap.NewFromStringMap(map[string]any{
49+
"enabled": true,
50+
"flush_timeout": 200,
51+
"min_size_items": 111,
52+
"max_size_items": 222,
53+
})))
54+
require.NoError(t, cfg.Validate())
55+
require.Equal(t, cfg, Config{
56+
Enabled: true,
57+
FlushTimeout: 200,
58+
SizeConfig: SizeConfig{
59+
Sizer: SizerTypeItems,
60+
MinSize: 111,
61+
MaxSize: 222,
62+
},
63+
MinSizeConfig: MinSizeConfig{
64+
MinSizeItems: 111,
65+
},
66+
MaxSizeConfig: MaxSizeConfig{
67+
MaxSizeItems: 222,
68+
},
69+
})
70+
}

0 commit comments

Comments
 (0)