Skip to content

Commit 166e662

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 166e662

File tree

3 files changed

+35
-7
lines changed

3 files changed

+35
-7
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, 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+
}, cfg)
70+
}

exporter/exporterhelper/internal/base_exporter.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ func NewBaseExporter(set exporter.Settings, signal pipeline.Signal, options ...O
7070
}
7171

7272
//nolint: staticcheck
73-
if be.batcherCfg.MinSizeItems != nil || be.batcherCfg.MaxSizeItems != nil {
73+
if be.batcherCfg.MinSizeItems != 0 || be.batcherCfg.MaxSizeItems != 0 {
7474
set.Logger.Warn("Using of deprecated fields `min_size_items` and `max_size_items`")
7575
}
7676

0 commit comments

Comments
 (0)