Skip to content

Commit 4ed2f17

Browse files
committed
updated config
1 parent e1cb1df commit 4ed2f17

4 files changed

Lines changed: 44 additions & 12 deletions

File tree

exporter/exporterhelper/internal/queuebatch/batcher.go

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,19 @@ func NewBatcher(cfg configoptional.Optional[BatchConfig], set batcherSettings[re
3636
}
3737
bCfg := cfg.Get()
3838

39-
// bCfg.Sizers is guaranteed to have exactly one entry due to Validate()
40-
for szt, limit := range bCfg.Sizers {
41-
bCfg.Sizer = szt
42-
bCfg.MinSize = limit.MinSize
43-
bCfg.MaxSize = limit.MaxSize
44-
break
39+
if len(bCfg.Sizers) > 0 {
40+
// Normalize the first sizer to legacy fields (should only be one because of Validate)
41+
for szt, limit := range bCfg.Sizers {
42+
bCfg.Sizer = szt
43+
bCfg.MinSize = limit.MinSize
44+
bCfg.MaxSize = limit.MaxSize
45+
break
46+
}
47+
} else {
48+
// Fallback to default limits (items: 8192, 0)
49+
bCfg.Sizer = request.SizerTypeItems
50+
bCfg.MinSize = 8192
51+
bCfg.MaxSize = 0
4552
}
4653

4754
sizer := request.NewSizer(bCfg.Sizer)

exporter/exporterhelper/internal/queuebatch/config.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -152,9 +152,7 @@ func (cfg *BatchConfig) Validate() error {
152152
return errors.New("`batch` does not support `min_size`, `max_size`, `sizer` fields anymore, please use `sizers` instead")
153153
}
154154

155-
if len(cfg.Sizers) == 0 {
156-
return errors.New("`sizers` cannot be empty; leave it unset to use default batch settings, or configure at least one sizer limit")
157-
}
155+
158156

159157
if len(cfg.Sizers) > 1 {
160158
return errors.New("`sizers` supports only one entry at this moment")

exporter/exporterhelper/internal/queuebatch/config_test.go

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ func TestConfig_Validate(t *testing.T) {
4646
cfg = newTestConfig()
4747
cfg.Batch.Get().Sizers = map[request.SizerType]SizerLimit{}
4848
cfg.Batch.Get().Sizer = request.SizerType{}
49-
require.EqualError(t, xconfmap.Validate(cfg), "batch: `sizers` cannot be empty; leave it unset to use default batch settings, or configure at least one sizer limit")
49+
require.NoError(t, xconfmap.Validate(cfg))
5050

5151
cfg = newTestConfig()
5252
cfg.Sizer = request.SizerTypeBytes
@@ -131,11 +131,17 @@ func TestBatchConfig_Validate(t *testing.T) {
131131
cfg.Sizers[request.SizerTypeBytes] = SizerLimit{MinSize: 100}
132132
require.EqualError(t, xconfmap.Validate(cfg), "`sizers` supports only one entry at this moment")
133133

134-
// Empty Sizers -> error
134+
// Empty Sizers -> no error (falls back to defaults)
135+
cfg = BatchConfig{
136+
FlushTimeout: 200 * time.Millisecond,
137+
}
138+
require.NoError(t, xconfmap.Validate(cfg))
139+
135140
cfg = BatchConfig{
136141
FlushTimeout: 200 * time.Millisecond,
142+
Sizers: map[request.SizerType]SizerLimit{},
137143
}
138-
require.EqualError(t, xconfmap.Validate(cfg), "`sizers` cannot be empty; leave it unset to use default batch settings, or configure at least one sizer limit")
144+
require.NoError(t, xconfmap.Validate(cfg))
139145

140146
// Programmatic legacy usage -> error
141147
cfg = BatchConfig{
@@ -241,6 +247,21 @@ func TestUnmarshal(t *testing.T) {
241247
return cfg
242248
},
243249
},
250+
{
251+
path: "batch_set_sizers_empty.yaml",
252+
expectedCfg: func() configoptional.Optional[Config] {
253+
cfg := newBaseCfg()
254+
cfg.Get().Sizer = request.SizerTypeBytes
255+
cfg.Get().QueueSize = 2000
256+
cfg.Get().Batch = configoptional.Some(BatchConfig{
257+
FlushTimeout: 2 * time.Second,
258+
Sizers: map[request.SizerType]SizerLimit{
259+
request.SizerTypeItems: {MinSize: 8192},
260+
},
261+
})
262+
return cfg
263+
},
264+
},
244265
{
245266
path: "batch_set_nonempty_no_explicit_sizer.yaml",
246267
expectedErr: "`batch` does not support `min_size`, `max_size`, `sizer` fields anymore, please use `sizers` instead",
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
enabled: true
2+
sizer: bytes
3+
queue_size: 2000
4+
batch:
5+
flush_timeout: 2s
6+
sizers: {}

0 commit comments

Comments
 (0)